文档章节

NodeJS

扫地
 扫地
发布于 2015/01/04 14:45
字数 649
阅读 11
收藏 0

NodeJS 入门:http://www.nodebeginner.org/index-zh-cn.html

How To Node 建博客:http://howtonode.org/express-mongodb

Mixu's Node book 深入学习:http://book.mixu.net/node/


Windows 下打开 Node.js command prompt,安装 Web 开发框架 express

npm install express -gd

-g 指定安装到NODE_PATH的lib里面,不指定则安装在当前目录下

-d 指定安装所有依赖包

> express hello // 在当前目录创建一个exrpess项目
> cd hello          // 切换到项目目录
> npm link        // 安装依赖的模块
> node app.js   // 启动


express 默认使用的模板引擎是 jade,即 python style 的 html

如果 css 样式文件可以使用 stylus 模块生成的话,那就有 python style 的 css 了


安装 supervisor ,这样每次更改JS代码后,会自动重启 nodejs [https://github.com/isaacs/node-supervisor]

npm install supervisor -g



module.exports  VS  exports

在导出模块时 exports 是一个辅助对象,exports 负责把 properties 添加到 module.exports 

最终返回给调用者的是 module.exports


module.exports 和 exports 的区别在于 

module.exports 会导出模块类型本身,即可以导出任意类型,如导出 Function

exports 只导出模块类型的 properties ,即只能导出 Object ,使用 Object 的 properties

exports 通过 Object 的 properties 导出一个 Function 和 module.exports 直接导出 Funciton 效果相同



1、模块导出,导出一个类型,使用时则需要 new

module.exports = Hello;
    
function Hello() {
    this._name = 'Hello';
    this._count = 0;
}
    
Hello.prototype.test = function() {
    var self = this;
    return function() {
        return self._name;
    };
}

使用这个模块:

var Hello = require('./hello');
    
var hello = new Hello();    //new 一个对象
console.log( hello.test()() );    //"Hello"


2、模块导出,导出一个直接对象

module.exports = function() {
    var hello = {
        _name: 'Hello',
        _count: 0,
    };
        
    hello.test = function() {
        var self = this;
        return funcion() {
            return self._name;
        };
    };
    
    return hello;
};

使用这个模块:

var hello = require('./hello');
    
var obj = hello();    //调用函数返回一个对象
console.log( obj.test()() );


Hello 对象的 test() 方法是直接返回了一个函数对象,内部使用一个 self 变量来引用 hello 对象的上下文

如果其他对象在使用 Hello 时,再把 Hello 的 test() 方法返回的话,则需要函数对象的 bind()方法来设置对象的上下文

var Hello = require('./hello');
     
module.exports = Forward;
     
function Forward() {
}
     
Forward.prototype.test() {
    var hello = new Hello();
    return hello.test().bind(hello);    //ECMAScript5 中加入了 bind() 函数控制 this 关键字的绑定,NodeJS 直接用
}


JS 中的内置对象 Global 

所有全局定义的变量或函数,其实就是声明在 Global 对象的属性或方法, 即没人要的变量、函数都归 Global 了

NodeJS 中的 Global 对象名称不区分大小写

Global 对象的属性、方法等价于全局变量、全局函数,可以在不同文件,不同作用域中都可以直接使用

而在浏览器中 window 对象实现了 Global 的功能


© 著作权归作者所有

共有 人打赏支持
上一篇: NodeJS Addons
扫地
粉丝 0
博文 18
码字总数 12230
作品 0
成都
程序员
私信 提问
Node.js v0.12.8 发布

Node.js v0.12.8 发布,更新如下: Commits [] - build: backport tools/release.sh (Rod Vagg) #3642 [] - build: backport config for new CI infrastructure (Rod Vagg) #3642 [] - build......

oschina
2015/11/26
3.1K
20
Node.js进阶教程第一步(基础篇)-何韬-专题视频课程

Node.js进阶教程第一步(基础篇)—18659人已学习 课程介绍 本课程从Node.js的安装配置开始,包括函数调用,模块调用,路由,文件操作,异常处理,参数接收,正则表达式,连接数据库,事件等内...

pkutao
2016/09/06
0
0
macOS Mojave 10.14安装nvm

nodejs的版本迭代非常快速, 时至今日(2019年2月7日), nodejs的最新版本是11.9.0 而很多的优秀的工具如Easy Muke只能使用8.*的nodejs版本, 为了不同版本的nodejs能在同一个计算机上运行, 我们...

木子昭
02/07
0
0
Node.js的学习资源、教程和工具

这篇文章编译整理自Stack Overflow的一个如何开始学习Node.js的Wiki帖,这份资源列表在SO上面浏览接近60万次,数千个收藏和顶。特意整理发布到这里,其中添加了部分中文参考资料。 学习指南和...

90后爱国
2015/07/21
0
0
Node.js 4.0 将包含最新 V8,下个月发布!

第一个全新的 io.js/node.js 结合版本很快就要发布了! 上周是个正常的旧金山的夏天,阳光明媚,偶尔有些热风。新 Node.js 基金会组织了一次聚会,40 位 Node.js 贡献者自 Collaborator Sum...

oschina
2015/08/15
8.2K
43

没有更多内容

加载失败,请刷新页面

加载更多

如何开发一款以太坊(安卓)钱包系列2 - 导入账号及账号管理

这是如何开发一款以太坊(安卓)钱包系列第2篇,如何导入账号。有时用户可能已经有一个账号,这篇文章接来介绍下,如何实现导入用户已经存在的账号。 导入账号预备知识 从用户需求上来讲,导...

Tiny熊
今天
2
0
intellJ IDEA搭建java+selenium自动化环境(maven,selenium,testng)

1.安装jdk1.8; 2.安装intellJ; 3.安装maven; 3.1 如果是单前用户,配置用户环境变量即可,如果是多用户,则需配置系统环境变量,变量名为MAVEN_HOME,赋值D:\Application\maven,往path中...

不最醉不龟归
今天
4
0
聊聊ShenandoahGC的Brooks Pointers

序 本文主要研究一下ShenandoahGC的Brooks Pointers Shenandoah Shenandoah面向low-pause-time的垃圾收集器,它的GC cycle主要有 Snapshot-at-the-beginning concurrent mark包括Init Mark(P......

go4it
昨天
4
0
Makefile通用编写规则

#简单实用的Makefile模板: objs := a.o b.o test:$(objs) gcc -o test $^ # .a.o.d .b.o.d dep_files := $(foreach f,$(objs),.$(f).d) dep_files := $(wildcard $(dep_files)) ifneq ($(d......

shzwork
昨天
3
0
《万历十五年》的读后感作文4000字

《万历十五年》的读后感作文4000字: 万历十五年,即1587年,距今已过去432年。在明朝276的历史中,这一年很平淡,并没有什么特别之处。黄仁宇的《万历十五年》一书,有别于其他的历史叙述方...

原创小博客
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部