Node.js 入门教程 (二):模块

由于新工作要做前端,作为前端小白而且能尽快学习,所以选择慕课网的node.js的入门教程。博客只做自己学习的记录。

JavaScript缺少模块管理机制,容易出现变量被覆盖,方法被替代的情况(既被污染)。特别是存在依赖关系时,容易出现错误。采用命名空间的方式,把变量和函数限制在某个特定的作用域内,人肉约定一套命名规范来限制代码,保证代码安全运行。

CommonJs是一套规范,包括了modules,system,encodings,unit test等等来约定JavaScript应该怎么去组织和编写。

首先把执行不同任务的代码块和代码文件看为独立的模块,每一个模块都是一个单独的作用域,但不是孤立的,可能存在依赖关系。每个模块分为三个部分,定义、标识和引用。node.js借鉴了Commonjs的理念,并且基于CommonJS实现了一套模块管理系统。

nodejs里面,每一个js文件可以看成一个独立的模块,里面不需要有命名空间,不需要担心变量污染和方法隔离,而每个模块通过依赖和引入组合起来又组成了更强大的功能包

(一)模块分类:

核心模块

文件模块

第三方模块

(二)引入模块:

路径引入

名字引入

(三)使用模块流程:

创建模块:teacher.js 入口的js文件,并且加入特定功能

导出模块:exports.add=function(){} 把这个功能跟模块名建立关系

加载模块:var teacher=require(‘./teacher.js‘) 在其他文件引入并加载模块

使用模块:teacher.add(‘Scott‘)

(四)代码试验:

目录结构:

school

----student.js

----teacher.js

----class.js

----index.js 入口文件

student.js:

function add(student){
    console.log(‘Add student:‘ + student)
}
exports.add = add

代码解析:

exports是一个对象,可以挂载任何合法的JavaScript对象,包括属性,number,date,json,string,array等

klass.js:

var student = require(‘./student‘)
var teacher = require(‘./teacher‘)

teacher.add(‘Scott‘)

function add(teacherName, students){
    teacher
    students.forEach(function(item,index){
        student.add(item)
    })
}

exports.add = add

可以直接require模块,不用担心影响全局命名空间,node里面没有全局命名空间这个概念,如果模块没有错误,require就会返回这个模块对象,这个模块对象就是该模块的exports,而且还可以使用局部对象来接收require返回的对象

如果希望模块成为一个特别的对象类型,使用module.exports,如果希望模块成为一个传统的模块实例,使用exports.add(推荐使用)

index.js:

var klass = require(‘./klass‘)

exports.add = function(klasses){
    klasses.forEach(function(item, index){
        var _klass = item
        var teacherName = item.teacherName
        var students = item.students
        klass.add(teacherName,students)
    })
}var klass = require(‘./klass‘)

klass.add(‘Scott‘,[‘Lucy‘,‘Ben‘])

时间: 2024-11-03 23:03:07

Node.js 入门教程 (二):模块的相关文章

Node.js入门教程

http://www.nodebeginner.org/index-zh-cn.html#a-basic-http-server Node入门 作者: Manuel Kiessling翻译: goddyzhao & GrayZhang & MondayChen 关于 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识.本书绝不是一本“Hello World”的教程. 状态 你正在阅读的已经是本书的最终版.因此,只有当进行错误更正以及针对

Node.js入门教程——如何实现文件上传功能

作者:zhanhailiang 日期:2014-11-16 本文将介绍如何使用Node.js实现文件上传功能. 1. 初始化项目信息:npm init [root@~/wade/nodejs/nodejs-upload-image-demo]# npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to gu

Node.js入门(二)

一.事件 所有产生Node.js事件的对象都是 events.EventEmitter 的实例,即: //event.js var EventEmitter = require('events').EventEmitter; var event = new EventEmitter(); event.on('some_event',function (){ //注册事件some_event的一个监听器 console.log('some_event occured.'); }); setTime

Node.js入门教程 第一篇 (环境配置及概念原理)

Node.js 概念 Node.js本质上是使用Google的V8引擎制作出来的服务框架.V8本身是Google为了解决Chrome浏览器的性能问题而制作的前端引擎(开源).本身依托于浏览器引擎,这也是为什么Node.js使用的是前端的JavaScript语言编程. V8的诞生是Google为了解决JavaScript的性能问题,用了内联缓存和隐藏类技术实现的前端引擎.V8使用C++编写,也因此V8可以在C++项目中完美兼容使用. V8被Google使用在大多数产品中,如Chrome浏览器,安卓

Node.js入门教程 第五篇 (Express框架)

Express框架 Express是适用于Node.js web的框架,提供了大量实用功能,例如路由功能及http功能. Express 框架核心特性: 可以设置中间件来响应 HTTP 请求. 定义了路由表用于执行不同的 HTTP 请求动作. 可以通过向模板传递参数来动态渲染 HTML 页面. 安装: npm install express --save 可能需要的中间件: body-parser - Node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据. c

node.js入门(二) 第一个程序 Hello World

新建一个名为"hello.js"文本文件,然后输入如下内容 1 //载入http模块 2 var http = require('http'); 3 //构建一个http服务器 4 var server = http.createServer(function(request,response){ 5 response.writeHead(200,{'Content-Type':'text/plain'}); 6 response.write('Hello World!'); 7 re

Node.js 入门教程 (三):API

(一)URL网址解析 URI: 统一资源标识符 URL:统一资源定位符 网址就是一个URL,说明了要以那种协议来访问哪种资源,URI更加抽象,是一个字符串格式规范,URL是URI的子集 parse() 第二个参数设为true,可以看到query变成了一个对象 第三个参数设置前后的区别 format() resolve() (二)querystring 参数处理 stringify()将对象序列化,第二个参数可以替换参数之间的连接值,第三个参数可替换key和value之间的连接值 parse()反

Node.js 入门教程 (三):API-准备知识

==========关于异步=========== 什么是回调? 回调是异步编程最基本的方法,比如nodejs中,需要按顺序执行异步逻辑的时候,一般采用后续传递的方式,也就是将后续逻辑封装在回调函数中作为起始函数的参数,逐层去嵌套,利用这种方式来让程序按照我们所期望的方式走完整个流程. function learn(something){    console.log(something)}function we(callback,something){    something += ' is

node.js入门之二

NPM 1.NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用. 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用. 由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了. 2.npm常用命令: a.查看当前版本号:npm -v b.安装模块:npm install moduleNam