express-tsx
Advanced tools
Comparing version 4.2.9 to 4.2.11
{ | ||
"name": "express-tsx", | ||
"version": "4.2.9", | ||
"version": "4.2.11", | ||
"description": "express view engine to render tsx file", | ||
@@ -13,4 +13,4 @@ "main": "dist/index.js", | ||
"preversion": "npm test", | ||
"preexample": "npm run build", | ||
"example": "node example" | ||
"presample": "npm run build", | ||
"sample": "node sample" | ||
}, | ||
@@ -29,2 +29,3 @@ "dependencies": { | ||
"@types/react": "^15.6.0", | ||
"chromeless": "^1.3.0", | ||
"express": "^4.15.3", | ||
@@ -31,0 +32,0 @@ "glamor": "^2.20.37", |
# 介绍 | ||
tsx 文件的 express 的视图引擎 . | ||
<del>警告 : 不要用于生产环境 , 没有打包, 使用的是直接加载模块文件</del> | ||
### 警告: | ||
不要用于生产环境 , 没有打包, 也许后续会和 `webpack` 集成, | ||
但暂时没有这个打算, 目前模块加载使用的是 `requirejs` | ||
# 安装 | ||
@@ -11,49 +14,25 @@ ```shell | ||
# 特点 | ||
- 有`sourcemap`支持, 可以轻松`debug`. 虽说默认是关闭的 | ||
- 支持热更新, 虽说是默认关闭 | ||
- `js`文件路径都带有`hash`值, 可以告别`ctrl`+`f5`了 | ||
- 编译器是完全独立的, 只依赖 typescript. | ||
- 编译器静态服务中间件只输出视图文件及其引用的文件, 不被引用的文件直接返回404, 所以你的文件是安全的 | ||
- 可定制程度高, 不行看 [`render.ts`](./src/render/render.ts) 就知道到底有多高了 | ||
- 虽然默认只支持`react`, 但可轻松扩展使其支持`Angular`. <del>并没有试过, 只是理论上应该可以的, 等人踩坑中</del> | ||
- 使用`requirejs`模块加载器, 配置模块的话,要使用`require('express-tsx').requirejsConfig(config)`函数, 可看示例 [example/requirejs.config.js](./example/requirejs.config.js) | ||
# 使用示例 | ||
[主文件](./example/index.js) | ||
# 使用 | ||
```javascript | ||
//创建包含 express-tsx 视图引擎的 express 服务 | ||
const { expressTsx,expressTsxMiddleware } = require('../') | ||
const server = expressTsx(__dirname) | ||
//开启 express-tsx 热更新 , 默认关闭 | ||
server.locals.hotreload = true | ||
//服务监听 | ||
server.listen(9000,function(){ console.log(`server is running on ${this.address().port}`) }) | ||
//**注意**:在渲染视图前需要根路由注入中间件 | ||
const { expressTsx, expressTsxMiddleware } = require('express-tsx') | ||
const server = require('express')() | ||
//渲染界面前必须要注入 `expressTsxMiddleware` 中间件, 否则会渲染失败. | ||
//建议在主路由中注入, 该中间件只执行一次 | ||
server.use(expressTsxMiddleware) | ||
require('./requirejs.config') | ||
//渲染视图 | ||
server.use(/\/$/,(req,res)=>{ | ||
if(!req.query.callback){ return res.render('./hello.tsx') } | ||
res.jsonp({word:'world'}) | ||
//设定好了视图引擎的子服务. 注: 没有被设为默认视图引擎, 所以需要带上后缀名 | ||
const miniServer = expressTsx(__dirname) | ||
miniServer.use((req,res,next)=>{ | ||
res.local.hotreload = false //默认热重载界面是关闭的, 需要手动开启 | ||
}) | ||
//还在测试 redux 中 ; 但状态管理工具并不限制于 redux | ||
server.get('/redux',(req,res)=>{ | ||
res.render('./views/index.tsx') | ||
}) | ||
miniServer.get('/',(req,res)=>res.render('./view.tsx')) | ||
//使用子服务 | ||
server.use('/',miniServer) | ||
``` | ||
[视图文件](./example/hello.tsx) | ||
```jsx typescript | ||
import React = require('react') | ||
console.log('express-tsx' as any) | ||
export type Props = { word:string } | ||
// 导出用以渲染组件的数据 | ||
export const props = require('?props');import '?props'; //从 '?props' 中获取服务器数据 | ||
// 导出用以渲染的组件或者组件实例 , 导出名为 View || default | ||
export const View:React.StatelessComponent<Props> = (props)=> | ||
<div> | ||
hello {props.word} | ||
</div> | ||
```jsx | ||
import *as React from 'react' | ||
export default <div>hello world</div> | ||
``` | ||
# 深入使用 | ||
[ 点击查看 sample/custom.js ](./sample/custom.js) | ||
*********** | ||
************************************ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
54405
35
828
18
37