`
flex_莫冲
  • 浏览: 1092428 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

<了不起的NODEJS>学习笔记

 
阅读更多
一、 Chapter1
package.json
{
"names":"my-colors-project",
"version":"0.0.1",
"main":"./index".
"dependencies":{
"colors":"0.5.0"
}
}

如果不想暴露API,在package.json加入"private":true.
察看package.json所有的属性
npm help json

安装时加上-g 表示全局,.分发的是Node编写的命令行工具.
npm install -g express
npm search realtime //搜索npm仓库的模块
npm view socket.io// 查看模块
npm help -publish //如何发布模块帮助

二、 JS概览
var a={a:'b',c:"d"};
Object.keys(a); // 输出 ['a','c']
Array,.isArray();// 判断是否数组类型
[1,2,3].foreach(function (v) {
console.log(v);
});
__defineGetter__ 访问属性
__defineSetter__ 定义属性



三、 阻塞与非阻塞IO
Node是单线程的。
错误捕捉很重要,
process.on("uncaughtException", function (err) {
console.error(err);
process.exit(1); // 手动退出
});

要捕获一个未来才会执行到的函数所抛出的错误时不可能的。并且catch永远都不会被执行到
try {
setTimeout(function () {
throw new Error("here");
});
} catch (e) {
console.error(e); //不会执行到
}



四、 Node中的JS
全局对象:global,process
process.title
process.nextTick 可以将一个函数的执行时间规划到下一个事件循环中(相当于setImmediate)

模块系统有三个核心的全局对象:require、module、exports

绝对和相对模块:
绝对模块是指在其内部node_modules查找到的模块。或者node内置的如fs的模块
相对模块将require指向一个相对工作目录中的js文件。


五、 Cli,filesystem
验证package.json.json有无问题,在当前目录下运行npm install,无任何输出(ERROR,warn没关系)就是正常的。

console.log(process.argv);
输出[node,'/path','param'];// node和当前执行的文件路径,最后一个是参数

process.cwd 获取当前工作目录

process.chdir('/') 更改工作目录

process.env // shell环境下的变量
process.exit(1); // 退出
process.on('SIGKILL', function () {
// 收到信号
});

fs.createReadStream();
fs.watchFile(process.cwd() . "/" + file , function () {
console.log("file change");
} )

fs.watch();// 监视整个目录

六、 TCP
nodejs有两个和连接终止有关的事件:end和close
当客户端显示关闭TCP时触发end事件
当连接发生错误时,end事件不会触发,而是触发close事件



七、 HTTP
console.log(require('querystring').parse('name=Guillermo'));
console.log(require('querystring').parse('q=guillermo+rauch'));

querystring将字符串解析成一个对象.输出:
{ name: 'Guillermo' }
{ q: 'guillermo rauch' }

八、 Connect
URL挂载 让my-images和/images目录对应起来
server.use("/my-images", connect.static("/path/to/images"));

maxAge 一个资源在客户端缓存的时间
server.use("/js", connect.static("/path/to/bundle", {maxAge:1000000000}));

hidden:若=true,在UNIXwenjian系统中.开头的文件被认为是隐藏文件
server.use("/js", connect.static("/path/to/resources", {hidden:true}));

looger 中间件提供了四种日志格式
default
dev
short
tiny

server.use(connect.logger("dev"));

在node中,请求响应头都是小写的
body parser中间件

server.use(connect.bodyParser());

server.use(function (req,res) {
req.body.myinput
});

node 的session是保存在内存中的,重起node服务器会丢失.使用redis可持久化session

basicAuth中间件提供client 身份验证的功能.

九、 Express
EJS:模板 module,embedded js

express模板缓存
app.configure('production', function () {
app.enable('view cache');
});

app.set("view cache", true);

大小写路由敏感设置
app.set("/my/route", function (req, res){});

十、 websocket
HTTP 实现鼠标检测的缺点
1 请求顺序会乱.(通过sending状态,当请求一个时设置sending=false,成功返回后设置为true.但是依然无法根本解决,因为等待会耗时,且滞留(丢失)了延迟这段时间内的请求)
2 请求的消息header很多无关数据.而有效的数据只占很小一部分.浪费资源
因此,用TCP比HTTP更合适这类需求

WEBSOCKET也是建立在HTTP基础上的.

十一、 socket.io
当邦定到http.server后,所有以/socket.io开始的URL都会被拦截.
socket.io还自带了浏览器端运用的代码.

十二、 mongodb

十三、 msyql
node 0.6 开始可以直接使用require 引入json文件
var config = require("./config");


十四、 redis
十五、 代码共享

// 初始化module
(function (module) {
module.exports = function (a,b) {
return a +b;
}

if ('undefined' != typeof window) {
window.add = module.exports;
}
})(('undefined' == typeof module) ? module = {exports:{}} : module);



es5-shim的项目将所有浏览器缺少的ECMA标准api都实现了.优点是不需要修改原代码.缺点是,破坏了原型对象.影响其他使用者

另外一种解决方法是定义简单的函数,接收原生对象作为参数。,如果该对象的函数已经实现就直接使用 ,否则就实现一次。缺点是:我们要记的是工具函数而不是原生函数。而且有些工具函数会很长,很复杂。而且为了兼容旧款IE,要写出兼容的代码,会比较冗长。

例如 Object.keys
var keys= Object.keys || function (obj) {
var ret = [];
for(var i in obj) {
if (Object.prototype.hasOwnProperty.calll(obj,j)) {
ret.push(i);
}
}
}


Node社区写了兼容所有运行环境的Node API

十六、 测试
node自带了assert模块..
分享到:
评论

相关推荐

    nodeJS学习笔记.html

    nodejs 学习笔记 nodejs 学习笔记 nodejs 学习笔记

    Nodejs学习笔记.rar

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端..."Nodejs学习笔记"这个压缩文件应当包含了解析这些概念和技能的详细内容,帮助初学者或进阶者提升Node.js技术能力。

    NodeJS学习笔记和代码

    这个"NodeJS学习笔记和代码"的压缩包显然包含了帮助初学者掌握NodeJS基础知识和实践技能的所有必要资料。 首先,`NodeJS第1天笔记.docx`很可能是对NodeJS基础概念的介绍,包括但不限于以下几点: 1. **事件驱动...

    本人5年的nodejs学习笔记源码总结

    本人5年的nodejs学习笔记总结,里边非常详细,希望对你有所帮助

    Node.js-Nodejs学习笔记以及经验总结

    本学习笔记和经验总结将深入探讨Node.js的核心概念、主要特性、常用模块以及实战技巧,帮助你从零基础到熟练掌握Node.js。 一、Node.js核心概念 1. 非阻塞I/O模型:Node.js采用事件驱动、非阻塞I/O模型,提高了...

    NODEJS学习笔记

    ### Node.js 学习笔记知识点总结 #### 一、调试工具——Supervisor - **安装命令**:`npm install supervisor -g` - `supervisor`是一个强大的Node.js开发工具,能够自动重启进程来帮助开发者在修改代码后快速...

    ios学习笔记二--电影网

    在本“ios学习笔记二--电影网”的教程中,我们将深入探讨如何使用Node.js和Express框架构建一个简单的在线电影数据库。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它使得开发者能够在服务器端使用...

    Nodejs学习笔记大全.pdf

    在学习Node.js时,首先需要掌握基础知识,如命令行窗口操作,了解Node.js的基本概念和用途。Node.js虽然处理请求时是单线程,但其非阻塞I/O模型能够有效处理高并发请求,应用场景包括Web服务API、实时多人游戏、后端...

    前端学习之nodeJS学习笔记

    node.js学习笔记

    毕业设计 基于区块链和nodejs的云笔记系统,使用了nodejs和以太坊区块链技术源码+详细文档+全部资料(高分项目).zip

    毕业设计 基于区块链和nodejs的云笔记系统,使用了nodejs和以太坊区块链技术源码+详细文档+全部资料(高分项目).zip毕业设计 基于区块链和nodejs的云笔记系统,使用了nodejs和以太坊区块链技术源码+详细文档+全部...

    黑马web 39期 nodejs笔记

    ### 黑马web 39期 Node.js笔记 #### NVM 安装与管理 - **NVM**(Node Version Manager)是一个用于管理多个Node.js版本的工具,它可以帮助开发者轻松地在不同的项目中切换所需的Node.js版本。 - **安装**: NVM 的 ...

    NodeJs学习笔记1

    本篇学习笔记主要涵盖了三个核心知识点:模块封装、模块调用以及如何执行Node.js文件。 首先,我们来看看如何封装一个模块。在Node.js中,我们可以创建一个JavaScript文件,比如`test.js`,并在其中定义一个函数。...

    NodeJS第2天笔记1

    2. 使用 `&lt;% %&gt;` 标记 JavaScript 代码,使用 `&lt;%- %&gt;` 输出未转义的变量值,使用 `&lt;%= %&gt;` 输出转义后的变量值。 3. 可以定义局部变量和包含其他模板。 4. 支持条件语句 (`if`, `else`) 和循环 (`for`, `each`)。 ...

    NodeJS:在NodeJS上做笔记和编写代码学习

    学习NodeJS时记笔记和编写代码 安装过程(linux-amd64) wget https://nodejs.org/dist/v14.16.0/node-v14.16.0-linux-x64.tar.xz sudo mkdir /usr/local/lib/node tar -xvf node-v14.16.0-linux-x64.tar.xz mv ...

    NodeJS第7天笔记1

    总结,NodeJS第7天的学习笔记主要是关于Node.js与MongoDB的集成,特别是通过Mongoose进行数据库操作,以及利用EJS模板引擎在后端与前端之间传递数据。理解并熟练掌握这些技能,对于构建基于Node.js的Web应用至关重要...

    Nodejs学习笔记之Stream模块

    nodejs的fs模块并没有提供一个copy的方法,但我们可以很容易的实现一个,这种方式是把文件内容全部读入内存,然后再写入文件,对于小型的文本文件,这没有多大问题,比如grunt-file-copy就是这样实现的。

    Nodejs开发的学习笔记.rar

    这份"Nodejs开发的学习笔记"涵盖了Node.js的基础到高级应用,是学习和掌握Node.js开发的重要参考资料。 一、Node.js基础 1. 安装与环境配置:介绍如何在不同的操作系统(Windows、MacOS、Linux)上安装Node.js,...

    nodeJs和Angluar学习笔记

    angluar做前台,nodejs做后台,nginx打包部署,使用js做cs程序

    Nodejs学习笔记之NET模块

    TCP/IP协议是传输层协议,负责在网络中传输数据,确保数据的可靠性和顺序。Socket是对TCP/IP协议的封装,为...理解NET模块对于深入学习Node.js的网络编程至关重要,因为它揭示了Node.js网络通信的基本原理和机制。

    Electron in Action

    &lt;p&gt;Start editing to see some magic happen :)&lt;/p&gt; &lt;/body&gt; &lt;/html&gt; ``` 4. **运行应用**:在命令行中输入 `electron .` 命令即可启动应用。 #### 三、构建跨平台应用 Electron 的一大优势在于其支持跨平台...

Global site tag (gtag.js) - Google Analytics