介绍
tsx 文件的 express 的视图引擎 .
警告 : 不要用于生产环境 , 没有打包, 使用的是直接加载模块文件
安装
npm install express-tsx typescript --save
特点
- 有
sourcemap
支持, 可以轻松debug
. 虽说默认是关闭的 - 支持热更新, 虽说是默认关闭
js
文件路径都带有hash
值, 可以告别ctrl
+f5
了- 编译器是完全独立的, 只依赖 typescript.
- 编译器静态服务中间件只输出视图文件及其引用的文件, 不被引用的文件直接返回404, 所以你的文件是安全的
- 可定制程度高, 不行看
render.ts
就知道到底有多高了 - 虽然默认只支持
react
, 但可轻松扩展使其支持Angular
. 并没有试过, 只是理论上应该可以的, 等人踩坑中 - 使用
requirejs
模块加载器, 配置模块的话,要使用require('express-tsx').requirejsConfig(config)
函数, 可看示例 example/requirejs.config.js
使用示例
主文件
const { expressTsx,expressTsxMiddleware } = require('../')
const server = expressTsx(__dirname)
server.locals.hotreload = true
server.listen(9000,function(){ console.log(`server is running on ${this.address().port}`) })
server.use(expressTsxMiddleware)
require('./requirejs.config')
server.use(/\/$/,(req,res)=>{
if(!req.query.callback){ return res.render('./hello.tsx') }
res.jsonp({word:'world'})
})
server.get('/redux',(req,res)=>{
res.render('./views/index.tsx')
})
视图文件
import React = require('react')
console.log('express-tsx' as any)
export type Props = { word:string }
export const props = require('?props');import '?props';
export const View:React.StatelessComponent<Props> = (props)=>
<div>
hello {props.word}
</div>