Node.js笔记

简介

nodejs是一个js解析器,类似Python,可以直接运行js文件或者在交互命令中运行js代码,安装好了nodejs之后只要运行node.exe就能进入交互式环境

模块

require,require类似Python里面的import,用于将一个模块导入到当前模块,但是require的使用形式类似函数,使用如下:

main.js

//这一行代码引入相同路径下的tt.js作为一个模块,赋值给变量a
var a=required('./tt');
a.helllo();//输出hello
console.log(a==a.ex);//输出true

tt.js

//exports对象是一个模块的导出对象,上面main.js里面的
exports.hello=function(){
    console.log('hello');
}
exports.ex=function(){
    return exports;
}
module,module对象可以在本模块内部访问到,里面包含模块的一些信息,可以通过设置module模块来设置这些信息,例如替换模块的exports:

module对象实例

Module {
  id: 'D:\\workspace\\softwares\\node\\hello.js',
  exports: { hello: [Function], md: [Circular] },
  parent:
   Module {
     id: '<repl>',
     exports: {},
     parent: undefined,
     filename: null,
     loaded: false,
     children: [ [Circular] ],
     paths:
      [ 'D:\\workspace\\softwares\\node\\repl\\node_modules',
        'D:\\workspace\\softwares\\node\\node_modules',
        'D:\\workspace\\softwares\\node_modules',
        'D:\\workspace\\node_modules',
        'D:\\node_modules',
        'C:\\Users\\Administrator\\.node_modules',
        'C:\\Users\\Administrator\\.node_libraries',
        'D:\\workspace\\softwares\\lib\\node' ] },
  filename: 'D:\\workspace\\softwares\\node\\hello.js',
  loaded: true,
  children: [],
  paths:
   [ 'D:\\workspace\\softwares\\node\\node_modules',
     'D:\\workspace\\softwares\\node_modules',
     'D:\\workspace\\node_modules',
     'D:\\node_modules' ] }
NODE_PATH环境变量,可以通过指定NODE_PATH环境编辑指定包加载的路径,类似CLASSPATH环境变量。
包和入口模块,通常会将一个文件夹称为一个包,并且使用包来管理模块,为每一个包设置一个入口模块,在入口模块里面返回包里的所有模块:

模块1

exports.create=function(){
    return exports;
}

模块2

exports.create=function(){
    return exports;
}

入口模块

var m1=require('./m1');
var m2=require('./m2');
var name='module name';
exports.create=function(){
    return{
        name:name,
        m1:m1.create(),
        m2:m2.create()
    }
}
需要使用的时候只用使用main模块的create方法获取所有模块的引用就可以了
index.js ,当文件名为index.js的时候require不用写模块名,下面两条语句等价
var c= require('/home/user/lib/cat');
var c= require('/home/user/lib/cat/index');
package.json,package.json是定义当前路径的模块路径的配置文件,假如在/path/package.json 里面写了这样的代码:

package.json

{
    "name":"path",
    "main":"./lib/main.js"
}
那么`require(‘path’)就会导入path/lib/main.js这个文件,package.json字段全解
node.js可以使用read/writeFileSync(path)读取文件或写文件,这样会将整个文件都放到内存中间去,node.js使用createRead/WriteStream(path)创建文件的读写流。
读取的内容可以使用toString()方法转换成字符串。
node.js和java一样,使用引用控制实例,两个引用指向同一个实例的时候修改会同时应用到两个实例。

事件回调机制

nodejs使用events模块实现事件回调,即为某一个事件绑定一个handler函数,手动触发事件调用事件处理函数。实现的功能很像c#里面的时间委托。
//导入模块
var events=require("events");
//建立时间发射器
var eventEmitter=new events.EventEmitter();
//声明事件处理函数
var eventHandler=function(){
    console.log("test");
}
//绑定处理函数
eventEmitter.on('test',eventHandler);
//可以绑定多个处理函数
eventEmitter.on('test',function(){
    console.log('tet');
});
//触发事件
eventEmitter.emit('test');
利用events实现任务定时调度
//导入模块
var events=require("events");
//建立时间发射器
var eventEmitter=new events.EventEmitter();
//声明事件处理函数
var eventHandler=function(){
    console.log("test");
}
//绑定处理函数
eventEmitter.on('test',eventHandler);
//可以绑定多个处理函数
eventEmitter.on('test',function(){
    console.log('tet');
});
//1000秒触发事件
function run(){
    setTimeout(function(){
        eventEmitter.emit('test');
        run();
    },1000);
}
run();

路径解析

nodejs的路径解析模式不是总是在当前目录搜索,当前目录搜索不到的话会一直向上搜索,如在/dir1/dir2/test.js里面使用如下代码require('module'),则搜索路径依次是:
/dir1/dir2/node_modules/module
/dir1/node_modules/module
/node_modules/module

也就是只要上层目录里面有node_modules目录里面有这个模块就行

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值