1. 什么是node.js: 可以在服务器运行的js开源代码
使用谷歌的 V8引擎运行js代码, 使用事件驱动、非阻塞、异步IO, Js是单线程的
node奇数版测试版、偶数稳定版本
传统script引入js库问题:
1.比如A依赖jqury, 首先引入A,在引入jquery出问题
2.缺乏库管理系统
CommonsJs为了解决上面带来问题而提出,一个Js文件就是一个模块
新建一个node.js项目 结构:
package.json 描述文件,json文件,相当于andrid项目gradle,json文件不能写注释
lib js代码
doc 文档
test 测试单元
bin 可以执行二进制
npm: Node包管理仓库,安装node自带npm
package.json认识:
"name": "deng", 名字唯一 安装的时候必须指定(包名),这个一定注意唯一,相当于你你项目的包名
"version": "1.0.0", 版本 // 别人依赖你的时候需要
"description": "", 描述
"main": "index.js", 入口文件
"devDependencies": { // npm包依赖,相当于Android的 dependences
"browserify": "^16.5.1"
}
2. npm 基本命令:
npm version: 查看版本
npm search math: 查找
npm init: 创建package.json
npm install math: 安装 math
npm remove 包名 : 删除包
npm install 包名 --save: 安装包添加到依赖中,
开发完毕以后直接上传自己的代码,依赖包不用上传,别人下载你的包以后可以根据package.json的依赖去下载包
npm install 包名 -g: 安装工具,全局安装包
npm服务器在外国,cnpm淘宝镜像,安装以后使用cnpm命令, cnpm 安装:
https://developer.aliyun.com/mirror/NPM?from=tnpm
3. npm练习、nodejs使用, commonJs练习
3.1.使用:新建index.js , 始化:npm init, 创建 package.json 文件
{
"name": "nodepackage", // 包名
"version": "1.0.0", // 版本号
"description": "",
"main": "1.js", // 程序入口文件
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": { // npm 下载依赖
"math": "0.0.3"
}
}
3.2.下载: npm install math --save
3.3 .index Js中编写代码,程序依赖文件
// 为什么需要exports 暴露 才可以访问内部变量
// 这里相当于在一个闭包中(function(){}()),不暴露,无法访问
console.info("我是1.js");
var x=10;
// 同一一次性暴露
module.exports={
name:"小置同学",
age:18,
sayName:function(){
console.info("调用模块中的sayName()");
}
}
// 暴露单个属性
module.exports.x= 19000;
// 在node中有一个全局对象global, 和window类似
// 如何申明全局变量:
x1=100;
console.info(global.x1);
//console.info(arguments.callee+"")
/**
* function (exports, require, module, __filename, __dirname){} 所有的代码会写在{}中
*
* exports: 该对象用于把变量或者函数暴露到外部
* require: 函数,英语引入外部模块
* module: 表示当前模块本身,exports就是module的属性,可以使用 module.exports.x == exports.x
* __filename:当前模块的完整路径
* __dirname: 当前模块所在文件夹的完整路径
*/
//console.info("exports:",exports);
//console.info("require:",require);
//console.info("module:",module);
//console.info(__filename);
//console.info(__dirname);
3.4..程序入口 helloNode20101006.js 中 使用 index.js
// 引入一个文件模块,用户创建,引入本地js 文件
var md = require("./1.js");
// 引入核心模块,nodeJs库提供的
var fs= require("fs");
// npm 安装网上 库直接 引来引入
var math = require("math");
console.info("md.x是:"+md.x);
console.info("math add: "+math.add(4,5));
md.sayName();
//console.info(fs);
4 . 项目运行 node helloNode20101006.js , 运行结果
我是1.js
100 //console.info(global.x1);
md.x是:19000 // console.info("md.x是:"+md.x);
math add: 9 // console.info("math add: "+math.add(4,5));
调用模块中的sayName() // md.sayName();