part 1:
NodeJS是个啥?
Node简介:
NodeJS是一个JavaScript服务端的语言, 基于V8引擎的一个JS服务器语言。
Node.js
是一个基于
Chrome V8
引擎的
JavaScript
运行环境。Node.js
使用了一个事件驱动、非阻塞式
I/O
的模型,使其轻量又高效 , 适合高并发
。
Node.js
的包管理器
npm,成为世界上最大的开放源代码的生态系统
。
为啥适合高并发:
传统后台一个链接大概占用2M内存, 而nodejs不是,每个链接占用的内存大概是几十KB。nodejs的内存是动态占用的,当链接产生的时候会占用大量内存,不链接的时候,释放多余内存, 这样的模式,叫做非阻塞式。
nodejs有没有缺点那? 也有,nodejs处理大量计算的时候,会很慢。
所以,node适合的架构是啥样的那?
java + node
node负责并发处理,java负责逻辑,计算处理。
所以node最适合的就是作为中间层而存在。
webserver
一个网页经历了怎样的历程才能来到我们的面前!
为啥要学习NodeJS
原因简单的不能再简单, 作为一名web开发人员,只知道前端的知识是不够的。
问你几个问题。
你知道数据传输后,怎么进行加密么?
什么时候用后端渲染数据,什么时候用前端渲染数据那?
你知道webserver 是什么东西么?
你知道登录注册后端如何实现么?
你知道后台开发逻辑么?
一个后端跟你疯狂BB如何优雅不失逼格的怼回去?
你知道什么是面向对象数据库么?
…
但是为啥选择nodejs?
nodejs可以做的事情是:
文件的读写,
进程的管理,
网络的通信
系统级别API的调用......
当然nodejs 几乎无所不能:
node-webkit nodeOS Express …..
最后的最后 node 是一个JavaScript的运行环境。
搭建nodejs环境
建立一个node服务器;
const
http
=
require
(
"
http
"
);
var
server
=
http
.
createServer
((
request
,
response
)
=>
{
response
.
writeHead
(
200
,{
"
Content-Type
"
:
"
text/html
"
});
response
.
write
(
"
hello world
"
);
response
.
end
();
});
server
.
listen
(
8080
,
"
localhost
"
,
()
=>
{
});
NodeJS 模块化 CommonJS
对比编程体验:
最重要的是NodeJS沿用了所有的JavaScript语法,及其规则;
COMMONJS
目前的模块化核心无外乎两个,第一个是模块的定义,另一个就是模块的引用
一.模块的定义
模块的定义非常简单 , 主要分成两种情况;
- module.exports定义
module.exports = 功能集合;
- exports定义
exports
.
fnName
=
变量名
;
这两个方法有啥差别那?
首先我们来看下一个简单的功能进行模块化封装,使用这两种方法的差别,现有模块
helloWorld.js
代码如下:
function
hello
(){
console
.
log
(
"hello"
);
}
function
world
(){
console
.
log
(
"world"
);
}
顺便一提,在CommonJS规范中,一个js文件就是一个模块。
现在,模块有了(helloworld.js),功能有了(hello 方法 , world方法),我们如何让模块暴露在nodejs中,让其可以被随心所欲的引用那?当然是用刚才的两种方法:
1.module.exports方式
module
.
exports
=
{
hello
:
hello
,
world
:
world
}
这种方式的优点在于可以一次性将所有模块都暴露出来。
2.exprots 方式
exports
.
hello
=
hello
;
exports
.
world
=
world;
请注意,exports不能用 exprots={}这样的方式进行模块暴露
二.模块的引用
模块的引用也非常简单,只有一种情况就是require引入。
require引用
const 模块名称 = require(路径)
引用时,有两个非常值得注意的问题
1.路径
在commonjs中路径大体上分为三个种类:
1. / 代表根目录;
2. ./ 代表当前目录
3. ../ 代表返回上级目录;
2.找寻环境。
项目结构如下:
Root/
Module/
helloWorld.js
Main.js
helloWorld.js 如上所述;
当 main.js 想要引用 helloWorld.js 应该如何实现?
const hw = require(“./helloWorld”);
Part2:
npm使用
先注册一个自己的账号。
上传自己的npm包:
npm init
npm 添加用户
npm adduser //按照提示完成你的用户密码输入
npm publish 发布你的包到你的账号内
npm install huaizhiy
安装你的包 , 在安装之前一定要初始化 package.json。
tip:在上传之前一定要验证你的邮箱哦。
1.yarn 是一个优秀的包管理工具
npm 是我们已知的一个插件依赖工具。 但是其复杂的配置, 缓慢的下载速度, 还有让人头疼的种种奇怪问题在开发中让人头疼,yarn的出现极大的改善了这个问题。
2.yarn如何使用?
安装 :
指令:
依赖包安装及卸载:
yarn add [packagename] 安装一个依赖包
yarn remove [packagename] 卸载一个依赖包
当然 yarn 也支持 dev 分支安装
Yarn add [] --dev | -D
更新依赖包版本:
yarn upgrade 更新所有package.json中的依赖包;
yarn upgrade [package@version]
项目安装:
yarn init | yarn
3.node自动化调试工具 nodemon
安装 nodemon yarn add nodemon
配置package.json 在json中加入scripts项;
"
scripts
"
:
{
"
start
"
:
"
nodemon index.js
"
}
查看控制台输出即可。
当然也可以使用指令直接操作:
yarn nodemon [filename]
当然nodemon也有很多高级用法 详情请查阅
nodemon
用yarn安装全局软件;
Yarn global add [filename];