Node.Js的Module System 以及一些常用 Module
Node.Js学习就按照这本书的流程来。
在第7章结束与第10章结束时分别自己出一个小项目练练手。Node.Js的入门学习计划是这样。
目录:
,
QQ:1045642972 欢迎来索书以及讨论Node.Js。
Node.Js Demo
Node.Js官网提供了一个最基本的Demo Code:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
运行之后,浏览器中输入URL,结果:
require('http'); 就是从Node.Js提供的http 这个module中获取导出的对象,以进行之后的创建侦听端口的操作。
Module
Module System的4个要点:
- 每个Js文件都映射一个Module。
- 在每个Js文件中,都可以通过module这个变量,来直接操作到Module。
- 导出模块借助于module.exports这个变量
- 导入模块借助于require这个全局函数。
直接上代码来说明
文件结构:
PS:由于Js没有main(),Node.Js社区中约定将主流程写在app.js中。
utility模块如下:
var title = "Hello Node";
module.exports = {
SetTitle : function(titleName){
title = titleName;
},
Output : function () {
console.log(title);
}
}
app.js对于该模块的测试代码如下:
var module = require("./utility");
module.SetTitle("Hello CNBLOG");
module.Output();
console.log(module.title);
结果:

Node.Js的Module是非常安全的,每个module只能拿到exports变量出来的东西。
Path Module
提供与文件路径有关的功能,并且可以适应操作系统的环境(即Windows的\与Unix的/)。
DEMO(测试环境为Windows):
var path = require("path");
console.log(path.normalize("C:/Users/Guan/WebstormProjects/NodeStudy01/app.js"));
//Output:C:\Users\Guan\WebstormProjects\NodeStudy01\app.js
console.log(path.join("C:/Users/Guan/WebstormProjects", "NodeStudy01", "app.js"));
//Output:C:\Users\Guan\WebstormProjects\NodeStudy01\app.js
console.log(path.dirname("C:/Users/Guan/WebstormProjects/NodeStudy01/app.js"));
//Output:C:/Users/Guan/WebstormProjects/NodeStudy01
console.log(path.basename("C:/Users/Guan/WebstormProjects/NodeStudy01/app.js"));
//Output:app.js
console.log(path.extname("C:/Users/Guan/WebstormProjects/NodeStudy01/app.js"));
//Output:.js
fs Module
提供了异步与同步两种模式读写文件的功能。
DEMO:
var fs = require('fs');
fs.writeFileSync('testA.txt', "Hello Node");
console.log(fs.readFileSync('testA.txt').toString());
fs.writeFile('testB.txt', "Hello Node", function () {
console.log(fs.readFileSync('testB.txt').toString());
});
os Module
该模块提供了获取当前系统OS有关的功能,如:获取CPU核数,内存余量等。
DEMO:
console.log('Total Memory', os.totalmem(), 'Bytes');
console.log('Available Memory', os.freemem() , 'Bytes');
console.log('This machine has', os.cpus().length, 'CPUs');
当然,Module还有很多,具体参考Node.Js官网的API DOC。
Node.Js的Module System 以及一些常用 Module的更多相关文章
- node.js整理 02文件操作-常用API
NodeJS不仅能做网络编程,而且能够操作文件. 拷贝 小文件拷贝 var fs = require('fs'); function copy(src, dst) { fs.writeFileSync ...
- Node.js学习笔记 01 搭建静态服务器
希望这篇文章能解决你这样一个问题:“我现在已经了解了一些Node.Js基本概念了,怎么搭一台静态服务器呢?” 请参考一下博主的前两篇文章: 完全面向于初学者的Node.js指南 Node.Js的Mod ...
- 完全面向于初学者的Node.js指南
新的上班时间是周二至周六,工作之余当然要坚持学习啦. 希望这篇文章能解决你这样一个问题:“我现在已经下载好Node.Js了,该做些什么呢?” 原文URL:http://blog.modulus.io/ ...
- Node.js NPM Tutorial
Node.js NPM Tutorial – How to Get Started with NPM? NPM is the core of any application that is devel ...
- A chatroom for all! Part 1 - Introduction to Node.js(转发)
项目组用到了 Node.js,发现下面这篇文章不错.转发一下.原文地址:<原文>. ------------------------------------------- A chatro ...
- Node.js 全局对象介绍
全局对象 这些对象在所有模块里都可用.有些对象不是在全局作用域而是在模块作用域里,这些情况下面文档都会标注出来. global {Object} 全局命名空间对象. 浏览器里,全局作用域就是顶级域.如 ...
- [Node.js] 05 - Modules and Function
一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码.JSON 或者编译过的C/C++ 扩展. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的. No ...
- Practical Node.js摘录(2018版)第1,2章。
大神的node书,免费 视频:https://node.university/courses/short-lectures/lectures/3949510 另一本书:全栈JavaScript,学习b ...
- 2015年最佳的15个 Node.js 开发工具
Node.js 越来月流行,这个基于 Google V8 引擎建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.在本文中,我们列出了2015年最佳的15个 Node.js 开发工具.这些工具 ...
随机推荐
- JS截取与分割字符串常用技巧总结
本文实例讲述了JS截取与分割字符串的常用方法.分享给大家供大家参考,具体如下: JS截取字符串可使用 substring()或者slice() 函数:substring() 定义:substring( ...
- liunx下的权限详解
用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念 - 所有者 - 所在组 - 其它组 - 改变用户所在的组 所有者 一般为文件的创建 ...
- MySQL数据库学习----理论基础
一:数据存储发展过程 1. 人工管理阶段 主要存储在纸带.磁带等介质中,手工记录,效率低下. 2. 文件系统阶段 存储在计算机磁盘中,以文件形式出现,数据管理变得简单,但是数据没有结构化处理,不易于查 ...
- bzoj1017 [JSOI2008]魔兽地图DotR——DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1017 好难想的状态啊!f[i][j][k]表示i号物品有j个向上贡献,一共花了k钱的最大力量 ...
- qunar面试题及一位大牛的解答
本文摘自:http://www.cnblogs.com/jarson-7426/p/3989208.html 1.写一个函数padstare(string str1,min_lenthg,string ...
- DELL R730服务器配置RAID及安装服务器系统 以及域的控制
https://wenku.baidu.com/view/ad45d85a9ec3d5bbfd0a74d9.html
- 利用jenkins和docker实现持续交付
利用jenkins和docker实现持续交付 一.什么是持续交付 让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定.持续的保持在随时可以发布的状况.它的目标在于让软件的构建.测试与发布变得更 ...
- git 基本命令详细解释
创建: 2017-04-05 17:04:03 2017-04-24 更新: 2017-05-16 更新: 2017-06-27 完善git remote add 更新: 2017 ...
- 几题LCS后的小总结
先得理解最长上升子序列吧,这还是非常简单的. 然后就是要真正理解LCS: 真正理解源于做题,做题就像查漏补缺一样,你总有不会的地方. 非常彻底地理解该图(还是去做题啦) = =瞎几把乱说有两种问题 [ ...
- bzoj 2131: 免费的馅饼【dp+树状数组】
简单粗暴的dp应该是把馅饼按时间排序然后设f[i]为i接到馅饼能获得的最大代价,转移是f[i]=max(f[j])+v[i],t[j]<=t[i],2t[i]-2t[j]>=abs(p[i ...