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(){}
}
(2)export default function say(){
}
可以参考网站:https://www.cnblogs.com/wisewrong/p/7241689.html
NodeJS新建服务器以及CommonJS规范的更多相关文章
- NodeJS学习笔记—1.CommonJS规范
由于现在web开发,越来越重视代码的复用和抽象的封装,为了解决代码的组织结构.管理.复用和部署等问题,现在普遍采用的机制是模块机制(module).CommonJS约定桌面应用程序和服务器应用程序需要 ...
- nodejs新建服务器
var http = require('http');// var optfile = require('./models/optfile'); http.createServer(function ...
- CommonJS规范(转)
概述 CommonJS是服务器端模块的规范,Node.js采用了这个规范. 根据CommonJS规范,一个单独的文件就是一个模块.加载模块使用require方法,该方法读取一个文件并执行,最后返回文件 ...
- Javascript模块规范(CommonJS规范&&AMD规范)
Javascript模块化编程(AMD&CommonJS) 前端模块化开发的价值:https://github.com/seajs/seajs/issues/547 模块的写法 查看 AMD规 ...
- Commonjs规范及Node模块实现
前面的话 Node在实现中并非完全按照CommonJS规范实现,而是对模块规范进行了一定的取舍,同时也增加了少许自身需要的特性.本文将详细介绍NodeJS的模块实现 引入 nodejs是区别于java ...
- AMD、CMD、CommonJs规范
AMD.CMD.CommonJs规范 将js代码分割成不同功能的小块进行模块化的概念是在一些三方规范中流行起来的,比如CommonJS.AMD和CMD.接下来我们看一下这几种规范. 一.模块化规范 C ...
- CommonJs规范详解---【XUEBIG】
CommonJS是服务器模块的规范,Node.js采用了这个规范 1.CommonJs规范的出发点:JS没有模块系统.标准库较少.缺乏包管理工具:为了让JS可以在任何地方运行,以达到Java.C ...
- Node.js相关——CommonJS规范
1. CommonJS规范产生背景 在后端,JavaScript的规范远远落后并且有很多缺陷,这使得难以使用JavaScript开发大型应用.比如: 没有模块系统 标准库较少 没有标准接口 缺乏包管理 ...
- AMD、CMD和CommonJS规范(转)
CommonJS规范 CommonJS是在浏览器环境之外构建JavaScript生态系统为目标产生的项目,比如服务器和桌面环境中.CommonJS规范是为了解决JavaScript的作用域问题而定义 ...
随机推荐
- VMware遇到的一连串问题
之前正常运行的VMware,再次打开提示“VMware Workstation pro 无法在 windows 上运行”, 百度一波,原来是微软的更新程序引起的问题,只要将最近的一次更新程序卸载然后重 ...
- IEnumerable、IEnumerator接口(如何增加迭代器功能)
IEnumerable.IEnumerator接口封装了迭代器功能,有了它,我们不需要将内部集合暴露出去,外界只需要访问我的迭代器接口方法即可遍历数据. 在C#中,使用foreach语句来遍历集合.f ...
- 浅谈C/C++回调函数(Callback)& 函数指针
摘要:回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是 ...
- 填坑 bzoj3337
算是个板子题吧,就是不知道啥时候能写出来. #include<cstring> #include<iostream> #include<cctype> #inclu ...
- CF1174E Ehab and the Expected GCD Problem(DP,数论)
题目大意:对于一个序列,定义它的价值是它的所有前缀的 $\gcd$ 中互不相同的数的个数.给定整数 $n$,问在 $1$ 到 $n$ 的排列中,有多少个排列的价值达到最大值.答案对 $10^9+7$ ...
- JAVA程序执行顺序(静态代码块》非静态代码块》静态方法》构造函数)
总结:静态代码块总是最先执行. 非静态代码块跟非静态方法一样,跟对象有关.只不过非静态代码块在构造函数之前执行. 父类非静态代码块.构造函数执行完毕后(相当于父类对象初始化完成), 才开始执行子类的非 ...
- Mac下Sublime Text常用插件
Mac下Sublime Text常用插件 SideBarEnhancements 右键菜单增强插件 BracketHighlighter 括号.引号.标签高亮插件 Pretty JSON JSON美化 ...
- CF1208F Bits And Pieces
CF1208F Bits And Pieces 传送门 思路 这里要运用SOS-DP的思路(\(\text{Sum over Subsets}\)).我在另外一篇博客里介绍过,如有需要可以搜索一下我的 ...
- Python UDP小程序
为了做UDP的测试,采用了nc和Python的服务器端. nc的安装和使用: yum install -y nc nc -vuz Python的UDP服务器端小程序: # -*- coding: UT ...
- 【操作系统之十二】分支预测、CPU亲和性(affinity)
一.分支预测 当包含流水线技术的处理器处理分支指令时就会遇到一个问题,根据判定条件的真/假的不同,有可能会产生转跳,而这会打断流水线中指令的处理,因为处理器无法确定该指令的下一条指令,直到分支执行完毕 ...