nodejs安装/node命令/module/exports/require/node核心/3m
site
- site
- github
- stackoverflow
- 辅助面试
- cnodejs
初始node.js
node.js的官方定义
- 代码状态
- 写的时候是编写状态
- 变成计算机可以读的,编译状态
- 代码运行的时候,就是运行平台
- 概念
- nodejs是js运行的一个环境,基于chrome浏览器的v8引擎
- node.js的特点 事件驱动 无阻塞的io模型(异步) 使node轻量高效
- 包生态系统 —> npm[node package manager]是一个客户端工具 世界上最大的包管理系统
- 命令
- shift+右键
- 打开cmd终端
- node js文件.js
- 就是让nodejs去执行一个指定的js文件
- shift+右键
- 命令解释
- node+文件路径
- node是调用已经安装的node应用程序
- 文件路径 是给node传的一个参数
- 注意点
- 不可以跨盘符调用js文件
- 注意点
- 和浏览器没有关系了,alert是基于浏览器的
- node+文件路径
js的引擎
- 特点
- 转化
- 汽车引擎 汽油 —-> 能量
- 模板引擎 模板+数据 —-> 页面
- js引擎 js代码 —->01010101 字节码、机器码
- 浏览器的引擎,就是执行js的
- 可移植性
- 引擎可以替换
- 比如360使用的ie或是chrom的内核…
- 汽车的引擎可以用别的车的引擎来换
- 为什么不使用其他引擎
- v8的引擎稳定性比较高
- 引擎可以替换
- 注意点
- node没有兼容性的问题了,node不是浏览器,给内核套了一个盒子,但不是浏览器
- 转化
总结
- 注意点
- node是后台的技术,是门技术不是语言
-
网站的执行过程 www.taobao.com 服务器 [页面、图片、js文件、css文件、静态的文件资源] [后台的技术 读写文件 发送网络请求 接收网络请求 java php .net node.js]
- 使用node网站
- 创业 开发成本低 开发效率高
- 互联网 ali (天猫所有的页面) bat
- 游戏公司 b站
node.js
- Ryan Dahl
- 2011年7年,node.js在微软的支持下发布wndow版本
node.js的版本进化
- 2011年7年,node.js在微软的支持下发布wndow版本
- LTS long time support 长期支持 稳定版—下载的时候下载这个
- 版本后缀
- .msi window安装包
- .exe window是二进制版
- ….
- 说明
- 是一个跨平台的技术
- 历史版本
- 09出现node.js
- 11年出现的这个网站
- 用版本的时候用偶数版,稳定
小例子
-
定义
02.module.js var a = 123; //打开一个通道被别人调用 module.exports = a;
-
加载
03.require.js var data = require(‘./02.module.js’); //通过接口得到module.exports的值 console.log(data);
node.js的模块化
global
- 是node下的全局
-
代码
a = 123; //global是全局的 console.log(global.a);
console.assert断言和console.time()和console.timeEnd()
- 断言
- 对一个表达式结果进行评估,
- 如果表达式为false则输出消息字符串并抛出AssertionError异常:
- 用于定位错误的
-
代码
var a = 3; console.assert(a == 1, 'assert');
- 返回开始与结束之间的毫秒数:
- console.time()标记开始时间
- console.timeEnd()标记结束时间
- 方法可以传入任何参数,但开始时间与结束时间参数必须一致
-
代码
console.time('test'); for(var i=0;i<10000;i++){console.log();} console.timeEnd('test');
node.js的模块化
- 一个js文件就是一个模块,模块里面的代码的作用域就在这个文件中
- 优点: 一次编写多次使用、便于维护
- node的模块化符合commonjs规范
- 环境
- window下的全局环境 加载js 是顺序加载
- node全局环境 是一个一个的加的 ** 之间的打通 module.exports 和 require **
- 代码node核心
- 在01cla中
- require得到的永远是module.exports
- 在02add.js
- 在给module.exports赋值之前,它是一个空对象
- 正确的用法
- modul.exports.addFn = add;
- 可以链式操作
- 错误的用法
- module.exports直接赋值只能被使用一次
- 代码
-
01.cal.js
/*var add = require('./add.js'); console.log(add(1,2));*/ //得到的是obj /*console.log(typeof require('./add.js'));//object var obj = require('./add.js'); console.log(obj.addFn(1,2));//3 console.log(obj.test);//123*/ console.log(require('./add.js'));//567 add.js var add = function(v1,v2){ return v1+v2; } // module.exports = add; // console.log(module) /* 在给module.exports赋值之前,它是一个空对象 正确的赋值方式 给对象赋值 */ /*module.exports.addFn = add; module.exports.test = 123;*/ //module.exports直接赋值只能被使用一次 module.exports = 123; module.exports = 567;
-
- 在01cla中
module
- 模块对象,当运行js的时候,有一个js,node就会为其创建一个module去存储这个js的相关信息
- 03-sub.js
- 所有被引用的代码,编写目的是为了暴露module.exports
- 第一次已经加载完了,放到全局对象中内存中;第二次进行加载的,直接去内存中拿去了
module.exports
require
- 第一次加载js(module)的时候,会执行一遍js里面的代码
- 第二次加载js的时候,不执行js代码了,直接去内存中找第一次加载js对应的module对象,从中找到module.exports
-
代码
01.js /*只会打印一次123 1. 第一次加载js(module)的时候,会执行一遍js里面的代码 2. 第二次加载js的时候,不执行js代码了,直接去内存中找第一次加载js对应的module对象,从中找到module.exports */ var sub = require('./sub.js'); var sub2 = require('./sub.js'); sub.js console.log(123); var sub = function(v1,v2){ return v1-v2; } module.exports = sub;
vscode教程
- http://i5ting.github.io/vsc/
exports
- exports 是module.exports的别名
- require module exports
模块化总结
-
模块化的代码具有封装性
,对代码进行包装,我想让你用什么接口,使用什么
- 有封装就有打破封装,需要给别人开接口,module.exports exports
- module.exports直接赋值
- exports 当一个js中有很多的属性和方法的时候,就使用exports向外暴露
- 一个js文件就是一个模块
-
一个模块的信息被保留在module对象里面,每一个模块都有一个module与之对应
- module对象产生了以后,第二次加载就不会再去执行,而是去内存中module对象中找module.exports
3m安装法
- npm
- 可以进行下载包,类似jq代码
- npm install jquery
- ** 下载工具 **
- npm install -g nrm
- 加上-g是全局安装
- 不加-g是下载到当前目录下
- npm install -g nrm
- 可以进行下载包,类似jq代码
- nrm
-
nrm的下载是在国外的
1. 解决办法 1. c/user/自己的用户/.npmrc 1. 去创建一个.npmrc 2. 用vscode打开 1. 将淘宝的数据源改下registry = ….就是手动去处理一下 2. 这个方法么生效
- npm 数据源管理工具
- 执行的命令
- nrm -h 查看帮助文档
- nrm ls 查看npm的数据源有哪些,标星号的表示正在使用的
- nrm use 数据源的名字 例如nrm use taobao
- 数据源已经被切换成淘宝的了
-
- nvm —–没操作
- node version manager
- nvm -h
- nvm list
- nvm install 版本号 下载
- nvm use 版本号 使用
- 解压dev
- nvm
- nodejs
- 配置环境变量(用户变量)
- NVM_HOME
- 将把nvm目录粘贴
- NVM_SYMLINK
- 把node目录粘贴
- 用户变量
- PATH
- 加上;%NVM_HOME%;%NVM_SYMLINK%
- 就是在任意盘可以找到nvm
- PATH
- NVM_HOME
- 环境变量的原理
- 先去目前在的文件下找,如果没有去找全局的可执行文件的文件名
查看api
- LTS版本的6.9.4
1/11/2017 5:04:20 PM