NodeJS学习day01
NodeJS发展
作者:Dyan Dahl
-
跟编程无关的纽约博士
-
退学
-
云通信
-
web性能专家
-
Google V8出现
-
一个平台:集成了Google的V8引擎,让JS运行在服务器端的平台**
Node发展
- 第一阶段(2009年):Ryan Dahl个人开发
- 第二阶段(2010年-2014年):Joyent公司资助,Dlyan Dahl负责技术工作
- 第三阶段(2014年-2015年):Node技术人才自立门户,创立IO.js
- 第四阶段(2015年):IO.JS和NodeJS合并,步入快车道
- 目前,NodeJS版本
**使用稳定版本:v6.10.2 最新的版本已经到7.7.10 了
注意: 偶数是稳定版本 奇数是不稳定版本
特点
- 单线程 PHP是多线程
- 事件驱动和回调函数
- 异步I/O
- 跨平台 所有的平台都支持
功能
- 复杂逻辑的网站|社交网站的大规模WEB应用
- 网络爬虫
- WebSocket(端游,页游)TCP/UDP套接字应用程序
- 单元测试工具
- 图形界面的本地应用程序(操作系统)
- 交互式终端程序
退出交互式的命令 .exit 可以退出 或ctrl+C 退出 2次
Node.js的缺点
- 大量采用匿名函数,使得抛出的异常不易阅读
- try/catch限于同步代码,使得异常捕获较为复杂
- 单线程:可靠性
- 不适合CPU密集型的场景 // 比较费时间的操作
- 回调的代码习惯影响阅读
ES6 Promise 解决嵌套回调的方式
async ES2017 的语法
q 第三方的库实现异步回调
bluebird 第三方库实现解决异步回调方式
安装
- 官网下载(v6.10.0):NodeJS官网
- 直接安装
- 测试是否成功
- 按下cmd+R,输入cmd,打开命令行工具
- 在命令行输入node -v,显示 v6.10.0,表示成功
- 顺带输入npm -v,显示 3.10.10,查看NPM版本
- nodejs的升级 可以安装n模块 然后可以升级到最新的版本
安装n模块 然后通过n模块升级
查了下 在Mac下可以安装 在Windows下无法安装
npm install -g n
n stable 直接安装到最新的版本 7.2.2
n 6.10.0 或者 n v6.10.0 对应版本
NPM(Node Package Manager):Node JS包管理工具
- Node安装成功,默认就安装了NPM
- NodeJS就在服务器端:(不要在服务器端使用BOM和DOM,可以使用ECMAScript基本语法)
1.alert()
2.docuemnt对象也不存在与服务器端
3.window对象也不存在于服务器端
功能
- 安装,卸载,更新,查看,搜索,发布包
命令
-
安装下载模块
npm install jquery 下载jquery
npm install jquery@1.12.4 下载指定版本jquery
npm install jquery --save (简写-S)
npm install bootstrap --save-dev (简写-D)
// 注意只有一个-符号对应后面的dev 并且后面还没有空格的
npm install ejs(模板引擎 类似template 类似``模板引擎) --save:
下载ejs并且将ejs的版本信息写入到package.json中
Mac和windows cmd下面采用 mkdir 建立对应的目录
NPM的安装源 可以使用淘宝的安装源安装
1.1 npm config set registry https://registry.npm.taobao.org
1.2 安装时指定安装源
npm install jquery --registry=https://registry.npm.taobao.org
或者 npm install jquery --registry=http://registry.npm.taobao.org
参数的前后没有空格 -
同时下载多个模块
<pre>
1.npm init(或者当前目录下新建package.json),内容如下
{
"name": "myapp", package名字(自定义)
"version": "1.0.0", package的版本(自定义)
"description": "", 描述(自定义)
"main": "main.js", 主入口文件(自定义)
"dependencies": { package的应用依赖模块,及别人要使用这个package,至少需要安装哪些东西。
"jquery": "1.8.3", 下载jquery
"bootstrap":"", 下载bootstrap
"angular":"" 下载angularJS
},
"author": "lin", 作者
"license": "ISC" 授权
}
2.npm install 下载安装
3.npm list 查看已经安装的模块
4.npm help npm的帮助文档
</pre> -
卸载 npm uninstall jquery
npm uninstall jquery --save -
查看包的信息
- npm ls:查看安装的包
- npm ls jquery:查看jquery包的特性
- npm info jquery:查看jquery包的详细信息
-
更新包 npm update jquery
-
搜索包 npm search jquery
-
查看npm当前配置 npm config list
注意事项
-
版本号理解(jquery-1.11.0)
// node 6.10.2 这3个数字分别代表什么意思- 主版本号:不兼容的API修改
- 副版本号:向下兼容的功能性新增
- 补丁版本号:向下兼容的bug的修复
-
常见版本号理解
比如jquery^1.11.0 最终安装的是 1.12.4- ^1.11.0 => 1.11.0 <= version < 2.0.0:比较激进
- 1.11.0:就是1.11.1版本
比如jquery~1.11.0 最终安装 1.11.3 版本 - ~1.11.0 => 1.11.0 <= version < 1.12.0:比较温和,尽可能兼容
-
NPM下载目录问题
- 上级目录有node_modules,文件就会被下载到上级的node_modules
-
默认在安装node.js环境,path路径就已经添加了。
执行命令 npm config get prefix:获取当前npm命令
注意:只有设置了环境变量 后面的supervisor 和 express才可以生效。
(后期设置supervisor,express等命令使用) -
全局安装(global)
npm install supervisor -g
npm install bower -g
安装的我不会出现在当前目录下,
出现在C:\Users\lin(自己的用户名)\AppData\Roaming\npm
查看文件的时间 可以知道自己什么时间安装的插件包
supervisor 组件 可以自动检查文件发生变化 并重新执行node命令 -
node程序的执行采用2种方式
第一种 node 文件名.js
第二种 如果文件下面有package.json 采用npm run test; 对应执行文件
Node的模块化开发程序
- NodeJS模块(包)
原生模块:C++语言扩展的模块 fs http url等:直接引入使用
文件模块:
1.1 第三方文件模块:
由组织或者个人写的模块:
必须先下载再引入模块
ejs:模板引擎
mongodb:NoSQL数据库
1.2 自定义文件模块: module(模块) exports(导入)
1.2.1 采用exports导入的方式