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(){}
}

(2)export default function say(){

}

可以参考网站:https://www.cnblogs.com/wisewrong/p/7241689.html

NodeJS新建服务器以及CommonJS规范的更多相关文章

  1. NodeJS学习笔记—1.CommonJS规范

    由于现在web开发,越来越重视代码的复用和抽象的封装,为了解决代码的组织结构.管理.复用和部署等问题,现在普遍采用的机制是模块机制(module).CommonJS约定桌面应用程序和服务器应用程序需要 ...

  2. nodejs新建服务器

    var http = require('http');// var optfile = require('./models/optfile'); http.createServer(function ...

  3. CommonJS规范(转)

    概述 CommonJS是服务器端模块的规范,Node.js采用了这个规范. 根据CommonJS规范,一个单独的文件就是一个模块.加载模块使用require方法,该方法读取一个文件并执行,最后返回文件 ...

  4. Javascript模块规范(CommonJS规范&&AMD规范)

    Javascript模块化编程(AMD&CommonJS) 前端模块化开发的价值:https://github.com/seajs/seajs/issues/547 模块的写法 查看 AMD规 ...

  5. Commonjs规范及Node模块实现

    前面的话 Node在实现中并非完全按照CommonJS规范实现,而是对模块规范进行了一定的取舍,同时也增加了少许自身需要的特性.本文将详细介绍NodeJS的模块实现 引入 nodejs是区别于java ...

  6. AMD、CMD、CommonJs规范

    AMD.CMD.CommonJs规范 将js代码分割成不同功能的小块进行模块化的概念是在一些三方规范中流行起来的,比如CommonJS.AMD和CMD.接下来我们看一下这几种规范. 一.模块化规范 C ...

  7. CommonJs规范详解---【XUEBIG】

     CommonJS是服务器模块的规范,Node.js采用了这个规范   1.CommonJs规范的出发点:JS没有模块系统.标准库较少.缺乏包管理工具:为了让JS可以在任何地方运行,以达到Java.C ...

  8. Node.js相关——CommonJS规范

    1. CommonJS规范产生背景 在后端,JavaScript的规范远远落后并且有很多缺陷,这使得难以使用JavaScript开发大型应用.比如: 没有模块系统 标准库较少 没有标准接口 缺乏包管理 ...

  9. AMD、CMD和CommonJS规范(转)

    CommonJS规范  CommonJS是在浏览器环境之外构建JavaScript生态系统为目标产生的项目,比如服务器和桌面环境中.CommonJS规范是为了解决JavaScript的作用域问题而定义 ...

随机推荐

  1. mysql小结(了解)

    Mysql总结 1.数据库的概念 """ 数据库:库(文件夹).表(表结构文件.表数据文件(索引结构)).字段(数据的描述).记录(数据的本体) 分类:效率问题(内存大于 ...

  2. Iptables不适用与socks协议吗?

    需求描述   现有一个台多公网IP服务器,用作于内网网关,通过NAT访问公网使用,要求不同的内网地址访问公网时使用不同的公网IP.可以简单理解为内网与公网IP进行一对一访问外网的映射. 服务器名称 I ...

  3. LA 4998简单加密游戏 —— 自相似性质&&不动点迭代

    题意 输入正整数 $K_1$($K_1 \leq 50000$),找一个12为正整数 $K_2$(不能含有前导0)使得 ${K_1}^{K_2} \equiv K_2(mod \ {10}^{12}) ...

  4. windbg是如何搜索符号文件的?

    来个样例 我的符号目录设置是: 用我们在windows下调试必须用到的ntdll.dll模块来讲下windbg加载符号文件的过程.windbg加载符号文件时,会首先根据配置的符号目录信息,在本地符号目 ...

  5. ESA2GJK1DH1K基础篇: STM32+GPRS(AT指令版)实现MQTT源码讲解(支持Air202,SIM800)

    前言 注: 本程序发送心跳包,发送温湿度,返回控制数据这三个发送是单独的,有可能凑到一起发. 由于本身程序就是复杂性的程序,所以这节程序没有使用中断发送,没有使用环形队列发送,为了避免多条消息可能凑到 ...

  6. 6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(Wi-Fi模块SSL连接MQTT)

    5-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(配置MQTT的SSL证书,验证安全通信) 首先确定自己的固件打开了SSL,升级篇里面的固件我打开了SSL,如 ...

  7. [PHP] Layui + jquery 实现 实用的文章自定义标签

    先看实现效果: html 代码如下: <!doctype html> <html> <head> <meta charset="utf-8" ...

  8. sql语句练习50题(Mysql版) 围观

    表名和字段 –.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –.课程表 Course(c_id,c_name,t_id) ...

  9. nginx lnmp之nginx+php

    配置如下(在server部分添加): location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/tmp/php-fcgi.sock; ...

  10. 第08组 Beta版本演示

    简介 组名:955 组长博客:点这里! 成员 031702329庄锡荣(组长) 031702309林晓锋 031702309侯雅倩 031702311陈珊珊 171709030吴珂雨 03170231 ...