美文网首页
node配置模块化导入导出

node配置模块化导入导出

作者: 雨落倾城夏微凉_e861 | 来源:发表于2020-07-25 22:29 被阅读0次

node的前一篇写过配置node的跨域,今天我们在上一篇的基础上进行重构让node支持模块化的导入导出(import/export)。

首先我把目录进行了比较大的调整


1.png

创建一个server文件夹下面放了两个js文件名字自定义,因为我们如果用node做开发的话不可能把所有功能全都写到一个文件中,这样不便于维护,这次用上次的跨域代码写个实例,将上次的代码拆分到两个文件中。

我的server文件夹下面就是放的跨域代码,express.js是实现主要功能的文件,index.js类似于一个入口文件,监听端口的地方。我们先来安装配置一下node模块化所需要的依赖文件。
在终端输入下面的代码安装:

cnpm i -S babel-node babel-cli babel-preset-env babel-plugin-add-module-exports  或
npm i -S babel-node babel-cli babel-preset-env babel-plugin-add-module-exports 或
yarn add babel-node babel-cli babel-preset-env babel-plugin-add-module-exports

然后在根目录下新建一个配置文件.babelrc,加入以下配置

{
    "presets": ["env"],//解析es6
    "plugins": ["add-module-exports"]//支持export
}

接着修改package.json里面的start启动命令

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "babel-node server/index.js"
  },

babel-node是我刚刚安装的一个依赖,用来调用.babelrc编译代码让node对导入导出进行支持。

express.js文件

import bodyParser from "body-parser"
import util from "util"

export default (express) => {
    const app = express();
    var allowCrossDomain = function (req, res, next) {
        res.header('Access-Control-Allow-Origin', '*');//自定义中间件,设置跨域需要的响应头。
        res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, DELETE');  //允许任何方法
        res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type,X-Session-Token');   //允许任何类型
        next();
    };
    app.use(allowCrossDomain);
    app.use(bodyParser.json());//解析json
    app.use(bodyParser.urlencoded({extended:true}))//解析表单
    app.get("/",(req, res) => {
        res.send("这是首页");
    })
    app.listenAsync = util.promisify(app.listen);
    return app;
}

index.js文件

import express from "express"
import myexpress  from "./express"

const server = myexpress (express);
server.listenAsync(3000).then(()=>console.log("http://localhost:3000")););

大家可能发现在express中引入了一个util,他是node为我们提供的一个api,在页面中我调用了他的util.promisify()方法,这个方法跟我们的es6中的promise很像,是为了处理一些异步的事件。因为这次数据操作和端口监听放到了不同的文件,为了保障当数据操作执行完成后才进行端口监听所以我们需要返回一个promise的事件。
在终端执行命令

npm run start

在浏览器输入http://localhost:3000/
显示如下证明重构成功

2.png

相关文章

  • 01-Node 基础使用

    Node 基础使用Node 介绍Node 模块化开发模块成员的导出模块成员的导入Node 系统模块 path 和 ...

  • node配置模块化导入导出

    node的前一篇写过配置node的跨域,今天我们在上一篇的基础上进行重构让node支持模块化的导入导出(impor...

  • es6的导入导出-模块化

    想使用es6的导入导出功能不需要配置nodejs环境和webpack环境,直接可以用 导入导出的功能是模块化,使你...

  • vue模块化

    ES模块化的导入和导出html部分: 模块部分: 导出部分:

  • import与export在node.js中的使用

    简述 import与export是es6中模块化的导入与导出,node.js现阶段不支持,需要通过babel进行编...

  • 六.JavaScript——exports、module.exp

    node.js中的导入导出 定义 exports——导出 module.exports——导出 require——...

  • nodejs--day1笔记

    1. nodejs基础是ECMAScript和Node模块API 2. 模块导入导出 导出 导入 3. 系统模块f...

  • Node的模块之fs,readline,url

    node的模块 require:导入一个模块 exports:导出模块 module.exports:导出模块 代...

  • webpack学习

    ES6模块化的语法学习 a、默认导出,使用export default 默认导出的成员b、默认导入,import ...

  • 前端模块化和Webpack简单介绍(上)

    前端模块化 为什么要使用模块化? 解决代码命名重复的问题 代码复用 模块化的核心:导入和导出 ES5中模块化的实现...

网友评论

      本文标题:node配置模块化导入导出

      本文链接:https://www.haomeiwen.com/subject/latvlktx.html