ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # REPL 命令行 略~ # 使用 TS 语法 因为 ts 是建立在 js 的基础之上的,但是 node 又不能直接运行 ts 代码,实际使用是往往需要使用 tsc 将 ts 代码编译成 js 代码,这无疑是很麻烦的。 ## ts-node 而 ts-node 则包装了 node,它可以直接的运行 ts 代码,使用起来很方便,它的官方仓库在这里 [TypeStrong/ts-node)](https://github.com/TypeStrong/ts-node) , 基本用法请自行查看它的 readme。 ## ts-node-dev node 中有个 nodemon,可以在开发时自动的重启我们的 node 程序,而在 ts-node 中,对应的就是 ts-node-dev ~~~ $ npx ts-node-dev src/index.ts ~~~ # 使用 ES6语法 ## 借助 Babel 1. 安装必须包 ~~~ npm install babel-register babel-preset-env --D ~~~ 2. 新建 `serverjs` 文件 ~~~ import Koa from 'koa' const app = new Koa() app.listen(3000, console.log("application is start at port 3000")) ~~~ 新增一个名为 `start.js` 启动文件: ~~~ // 当然不喜欢吧配置放这里,也可以拿出去,后面介绍 require('babel-register') ({ presets: [ 'env' ] }) module.exports = require('./server.js') ~~~ 接下来用 `node start.js` 来启动! ***** 单独取出配置,新建 `.babelrc` 文件,使用转换 ES2015+ 的 env preset ~~~ { "presets":[ "env" ] } ~~~ ## babel-node 1. 安装 ``` $ npm i -D @babel/core @babel/node @babel/preset-env ``` 2. `.babelrc` 文件配置 ``` { "presets": [ "@babel/preset-env" ] } ``` 3. 执行 babel-node ``` $ babel-node test.js ``` 注意⚠️:由于性能问题,babel-node 仅限于在本地调试时使用,线上还是需要用 node 去运行! ## `--experimental-modules` Node 9 开始支持 `ECMAScript Modules` 语法,使用 `import/export` 的文件后缀名必须为 `*.mjs`(?那很多模块使用`js` 咋办?别急,下面会讲利用 **Loader Hooks** 兼容 `*.js` 后缀文件)。 `ECMAScript Modules` 和 `require()` 的 cache 机制不一样。 命令行执行,(脚本后缀名为`.mjs`): ``` $ node --experimental-modules script.mjs # 启动必须加上 `--experimental-modules` ``` Node.js 12 带来了一些非常令人兴奋的改进,例如 **[ES6 模块支持](https://medium.com/@nodejs/announcing-a-new-experimental-modules-1be8d2d6c2ff)**、更好的应用程序安全性和更快的启动速度等。 * 将 `"type": "module"` 添加到项目的 `package.json` 中,且 Node.js 将项目中的所有 `.js` 文件视为 ES 模块。这种方法允许 Node 将 `package.json` 用于包级元数据和配置,做法类似 Babel 等捆绑和配置工具。 * 使用 `.mjs` 结尾的文件会被显式视为模块,使用 `.cjs` 结尾的文件会被视为 CommonJS。这些是仍然使用 `require` 和 `module.exports` 语法类型的文件。 现在这些功能不再需要标志就能使用,真是太棒了。 # 参考 Node已经支持绝大多数ES6功能,这些功能可以在 [node.green](https://node.green/) 网站上看到。 [https://www.c-sharpcorner.com/article/node-js-repl-terminal/](https://www.c-sharpcorner.com/article/node-js-repl-terminal/)