Node.js笔记
来源:互联网 发布:js通过id获取div 编辑:程序博客网 时间:2024/04/24 01:52
什么是Node.js
是使用了V8引擎,运行在服务端,能解析js的程序。
优势
- 脱离浏览器的执行环境
- 提供高性能的web服务
- IO性能强大
- 事件处理机制完善
- 天然处理DOM
- 社区活跃,生态圈完善
- 处理大流量数据,异步处理大量并发连接
- 适合实时交互的应用
- 完美支持对象数据
安装
官网:https://nodejs.org/en/download/
中文网:http://nodejs.cn/download/
淘宝镜像:https://npm.taobao.org/mirrors/node
本文以window为例,安装的是 msi 文件。
node -v // 下载相关文件,安装后,查看版本来判断是否安装了
NPM 内置的包管理器
从NPM服务器下载第三方包,如gulp、webpack、vue等等
npm 常用命令
npm install 模块 -g // 全局安装npm install 模块 // 安装好后不写入package.json中npm install 模块 --save // 安装好后写入package.json的dependencies中(生产环境依赖)npm install 模块 --save-dev // 安装好后写入package.json的devDepencies中(开发环境依赖)npm uninstall 模块 // 全局卸载npm uninstall 模块:删除模块,但不删除模块留在package.json中的对应信息npm uninstall 模块 // --save 删除模块,同时删除模块留在package.json中dependencies下的对应信息npm uninstall 模块 --save-dev // 删除模块,同时删除模块留在package.json中devDependencies下的对应信息
有时使用npm安装包会比较慢,可以用淘宝的的 NPM 镜像,cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org //安装cnpm
Hello World
// helloworld.js 使用 http 模块提供服务var http = require('http');http.createServer(function(req, res){ // 发送相应数据 res.end('hello world!\n');}).listen(8000);//服务运行后输出一行信息console.log('server is running...');
node helloworld.js // 在 helloworld.js 所在目录打开命令提示符,启动服务,用浏览器打开 http://localhost:8000 体验吧
阻塞与非阻塞
程序等待调用结果(消息、返回值)的状态。阻塞则是拿到结果才继续往下执行,而非阻塞则是继续做其他事,等结果拿到后通过回调来响应处理。
// 阻塞代码var fs = require('fs');var data = fs.readFileSync('data.txt'); // 同步读取console.log(data.toString());console.log('hei');
// 非阻塞代码var fs = require('fs');var data = fs.readFile('data.txt', function(err, data){ if(err){ return console.error(err); } console.log(data.toString());});console.log('没等待文件读取完毕,就执行到这了');
事件
var connctHandler = function connected(){ console.log('connected')}eventEmitter.on('connection', connctHandler); // 绑定事件处理函数// 触发事件eventEmitter.emit('connection');
模块化
模块是 Node.js 应用程序的基本组成部分。
文件和模块意义对应,一个文件对应一个模块 。
模块分为:原生模块、文件模块
模块加载方式:从文件模块缓存中加载、从原生模块找、从文件模块找
// 模块案例// hello.jsfunction hello(){ this.sayHello = function(){ console.log('hello'); }}module.exports = hello;// main.jsvar Hello = require('./hello.js');var h = new Hello();h.sayHello();node main.js //运行,结果:控制台打印“hello”
路由
// http.jsvar http = require('http');var url = require('url');function start (router) { function req (req, res) { var path = url.parse(req.url).pathname; router(path, res); } http.createServer(req).listen(8888); console.log('Server start');}exports.start = start;// router.jsfunction router(path, res) { if (path === '/') { res.end('首页'); } else if (path === '/user') { res.end('用户中心'); } else { res.end('404'); }}exports.router = router;// main.jsvar http = require('./http');var router = require('./router.js');http.start(router.router);// 运行node main.js
阅读全文
0 0
- Node.JS学习笔记
- node.js学习笔记
- Node.js笔记
- Node.js入门笔记
- Node.js 学习笔记
- Node.js入门笔记
- node.js学习笔记
- node.js 学习笔记
- Node.js笔记
- Node.js 学习笔记
- Node.js笔记
- Node js 学习笔记
- node.js初学笔记
- node.js笔记
- node.js 入门笔记
- Node.js学习笔记
- node.js学习笔记
- Node.js笔记
- JVM之垃圾收集器
- 线程与锁
- 在windows7下面microPython-下载代码,编译代码的方法
- 201412-1 门禁系统
- Android --- WIFI(一)
- Node.js笔记
- python 异常基础内容
- NumPy教程之(五)
- 网络流算法
- VINS mono 系统学习 三
- 游客丽江住店被蚊子咬醒 前台:养的宠物 死1只赔100
- 如何用 Graylog 管理日志?- 每天5分钟玩转 Docker 容器技术(93)
- HDU2243-考研路茫茫――单词情结
- leetcode题解-28. Implement strStr() && 521. Longest Uncommon Subsequence I && 522 II