Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

express-tsx

Package Overview
Dependencies
Maintainers
1
Versions
103
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

express-tsx - npm Package Compare versions

Comparing version 4.2.9 to 4.2.11

sample/custom.js

7

package.json
{
"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)
***********
************************************
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc