我说下比较值得记录下的地方。
一、简介
nodejs是异步I/O与事件驱型的语言,语法与JavaScript完全一致,不同在于JavaScript运行在浏览器中,由浏览器进行解析执行,而nodejs一门后端语言,一般是由V8引擎进行解析执行。相较于JAVA等他是单线程的,适合用于I/O密集型软件的开发,不适用于CPU密集型的软件开发。
先来看一下nodejs的异步操作:
var fs = require("fs"); fs.readFile('file.txt','utf-8',function(err,data){ if(err){ console.log(err); return; } console.log(data); }); console.log('文件读取');
这个是一个关于nodejs对文件的异步读取,readFile方法提供的最后一个参数是一个回调函数callback,回调函数是在readFile执行完毕后才进行执行,这段代码我们先看到打印“文件读取”几个字,才会打印从文件中读取的内容。这个代码在单线程中执行时不会因为回调函数没执行完而被阻塞。
二、nodejs的事件发射器
先看代码:
var events = require("events"); var emitter = new events.EventEmitter(); emitter.on('someEvent',function(){ console.log("someEvent事件触发"); }); emitter.emit('someEvent');
events 是 Node.js 最重要的模块,没有“之一”,原因是 Node.js 本身架构就是事件式 的,而它提供了唯一的接口,所以堪称 Node.js 事件编程的基石。
三、模块和包
模块(Module)和包(Package)是 Node.js 最重要的支柱。开发一个具有一定规模的程 序不可能只用一个文件,通常需要把各个功能拆分、封装,然后组合起来,模块正是为了实 现这种方式而诞生的。在浏览器 JavaScript 中,脚本模块的拆分和组合通常使用 HTML 的 script 标签来实现。Node.js 提供了 require 函数来调用其他模块,而且模块都是基于 文件的,机制十分简单。
什么是模块:模块是 Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是 JavaScript 代码、JSON 或者编译过的 C/C++ 扩展。
什么是包:包是在模块基础上更深一步的抽象,Node.js 的包类似于 C/C++ 的函数库或者 Java/.Net 的类库。它将某个独立的功能封装起来,用于发布、更新、依赖管理和版本控制。
包通常是一些模块的集 合,在模块的基础上提供了更高层的抽象,相当于提供了一些固定接口的函数库。通过定制 package.json,我们可以创建更复杂、更完善、更符合规范的包用于发布。
四、nodejs核心模块
全局对象:JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可 以在程序的任何地方访问,即全局变量。在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性。
五、Express框架+ejs模板进行WEB开发
1、安装express框架
$ npm install express -g
2、建立工程
express -e ejs "工程名" //会在当前目录产生一些文件 create : microblog create : microblog/package.json create : microblog/app.js create : microblog/public create : microblog/public/javascripts create : microblog/public/images create : microblog/public/stylesheets create : microblog/public/stylesheets/style.css create : microblog/routes create : microblog/routes/index.js create : microblog/views create : microblog/views/layout.ejs create : microblog/views/index.ejs //在根目录加上package.json的文件 { "name": "microblog" , "version": "0.0.1" , "private": true , "dependencies": { "express": "2.5.8" , "ejs": ">= 0.0.1" } } //运行 npm install会根据package.json配置,自动安装相关依赖 npm install