NodeJS新建服务器以及CommonJS规范

Posted lishixiang-007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NodeJS新建服务器以及CommonJS规范相关的知识,希望对你有一定的参考价值。

1、什么是node.js?
(1)Node.js 是一个基于 Chrome V8 引擎的 javascript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
(2)Node.js 的包管理器 npm,成为世界上最大的开放源代码的生态系统。
(3)Node.js 可以解析JS代码(没有浏览器安全级别的限制)提供很多系统级别的API,如: - 文件的读写 fs - 进程的管理 procress - 网络通信 socket - ……

2、为什么要学习nodejs?
node-webkit、nodeOs、express、koa、Jade、EJS、Forever、PM2、Log.i、Grunt、Gulp、Webpack、Mocha、Karma

3、node.js网站
(1)工具:https://nodejs.org/en/
(2)工具安装:https://www.runoob.com/nodejs/nodejs-install-setup.html
(3)连接mongdob:https://www.runoob.com/nodejs/nodejs-mongodb.html
(4)文档:http://nodejs.cn/

4、npm指令
(1)npm -V / npm --version 查询版本
(2)npm install -g cnpm --registry=https://registry.npm.taobao.org 淘宝镜像
(3)cnpm -V 查询版本
(4)npm install supervisor -g 用于运行nodejs程序的管理程序
(5)npm install nodemon -g 在开发node.js应用程序期间使用的简单监视器脚本。
(6)npm install pm2 -g 具有内置负载均衡器的Node.JS应用程序的生产过程管理器。

5、新建服务器server.js
(1)node要导入http模块
let http = require("http");
(2)主机
let hostname = "localhost";
(3)端口
let port = 3000;
(4)创建服务器
http.createServer((req, res) =>
  if(req.url !== "/favicon.ico")
  console.log(req.url);
  res.writeHead(200, "Content-Type":"text/html;charset=utf-8");
  res.write(`<h2>good good study</h2>`)
  res.write(`<h2>day day up</h2>`)
  res.write(`<h2>we are good boy</h2>`)
  res.end();
  
).listen(port, hostname, () =>
  console.log(`this server is running at http://$hostname:$port`);
)
(5)启动指令:node server.js/nodemon server.js

6、什么叫模块化开发?
复杂逻辑代码多的功能分而解之为独立高度封装的单元模块。

7、CommonJs规范
模块定义 define
模块接口暴露 exports
模块导入 require
注意:
(1)模块化开发 AMD异步模块定义(require.js) CMD同步模块定义(sea.js)
(2) NodeJs && webpack 是 CommonJS 规范 的一种实现 ;CommonJS 规范 是 NodeJs && webpack 的 规范 和规则
(3)所有的 js 文件 本身就是 一个模块
(4)nodejs使用的是commonjs规范 注意: nodejs虽然原生支持es6 但它并不支持 es6的import规范

8、接口暴露
导入:let xx = require("xxx")
导出:
(1)一个文件内只能使用一次
module.exports = Object | Function | Array | String | Number | Boolean
(2)一个文件可以使用多次
exports.xxx = Object | Function | Array | String | Number | Boolean
下列写法不被允许 它会改变exports对象的引用导致程序运行出错
exports =
xxx : "text"

举例说明:
(1)module.exports = ;
let arr = ["小红", "小黄", "小明"];
let str = "我要飞的更高,飞的更高";
let obj =
  age : "18",
  name : "jack",
  content : "money"

function setUsername(username)
  return `$username 说:every day day up`;

module.exports =
arr,
str,
obj,
setUsername

(2)exports key = value;
const getSomeone=(someone)=>
  return `<h3>$someone word hard for 12000 RMB </h3>`;

exports.getSomeone =getSomeone;
exports.word = `<h3>1807 你们努力了吗</h3>`;

es6的import规范
方式1
导入:
import XXX from "xxx"
导出:
export default xxx
该种方式一个文件内只能使用一次

方式2
导入:
import XXX from "xxx"
import XXX as YYY from "xxx" //将模块XXX给个别名为YYY
导出:
export let | const | var | function | class | interface XXX = ....
或者
let(可以是其他声明符) XXX = ....
export XXX

上述导出方式可以在同一个文件内使用多次
举例说明:
(1)export default
export default
  say()

 

以上是关于NodeJS新建服务器以及CommonJS规范的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS学习笔记—2.AMD规范

浅析JS模块规范:AMD,CMD,CommonJS

AMDCMDCommonJs规范

前端模块化CommonJS

export ,export default 和 import 区别 以及用法

nodejs的第三天学习