NodeJs 版本8.5 体验experimental-modules

最近NodeJs 版本 8.5 已经支持了 ESM module,感觉之前的babel编译可以放弃不用了,不过这个只是一个实验性的,具体稳定与否,是否可以上生产环境,还是需要测试一段时间的。

体验环境搭建:

NodeJs: v8.5.0

依赖包:

  "dependencies": {
    "axios": "^0.16.2",
    "koa": "^2.3.0",
    "koa-router": "^7.2.1",
    "koa-views": "^6.1.0",
    "twig": "^1.10.5"
  }

这里使用的是koajs,大家可以使用下express

模块引入不在需要require了,哈哈,感觉不一样的体验

import koa from 'koa';
import koaRouter from 'koa-router';
import axios from 'axios';
import views from 'koa-views';
import path from 'path';

像这样是不是感觉,瓦萨,还不错

继续看下面的配置

app.use(views(path.resolve() + '/views', {
     map: {
       html: 'twig',
     },
     extension: 'twig',
   }));

对于web开发,推荐koa-views,可以支持很多模板,想用哪个就用哪个

const viewsTest = async (ctx, next) => {
  ctx.state = {
    title: 'viewsTest',
  };

  await ctx.render('views_test', {
    title: 'viewsTest',
  });
  return next();
};

router.get('/views', viewsTest);

app
  .use(router.routes())
  .use(router.allowedMethods());


app.listen(8888);

好了,我的index.mjs创建完成,注意这里的index文件是以mjs结尾的 ,不然稍后运行的话是不会执行的。

view_test.twig模板其实很简单,为了测试简单加下就好了。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>{{ title }}</title>
</head>


<body>
{{ title }}
</body>

</html>

目录结果也给大家演示下

|-index.mjs

|-node_modules

|-package.json

|-package-lock.json

|-views

  |-views_test.twig

运行我们的程序

node --experimental-modules index.mjs

出现下面的提示就是运行起来了

$ node --experimental-modules index.mjs
(node:6999) ExperimentalWarning: The ESM module loader is experimental.

感觉开发代码又便捷了很多呀。

comments powered by Disqus