node.js学习日记(二)node.js的作用域

node.js的作用域

测试package1能否能通过require("./package2")来调用package2内的函数:

1 //paackage1.js
2 var a1 = 1;
3
4 require("./package2");
5
6 /*即使require了package2,也无法调用函数double_a*/
7 a1 = double_a(a1);//double_a is not defined
8
9 console.log("package1:" + a1);
1 //paackage2.js
2 function double_a(a) {
3     return a * 2;
4 }
5
6 exports.double_a = double_a;

报错了,并不能调用

package1要调用package2内的函数的正确方式:

1 //package1
2 var a1 = 1;
3
4 /*todo:获取了package2的exports对象*/
5 var package2 = require("./package2");
6
7 a1 = package2.double_a(a1);
8 console.log("package2:" + a1);
1 //package2
2 function double_a(a) {
3     return a * 2;
4 }
5
6 /*todo:把double_a挂载到exports对象*/
7 exports.double_a = double_a;

成功调用函数

再来试一个,利用作用域链,让package1获取package2内的变量

1 //package1
2 var package2 = require("./package2");
3 console.log("name:" + package2.getName());
1 //package2
2 var name = "lyjn";
3
4 /*todo:exports设置一个getName的方法获取name*/
5 exports.getName = function() {
6     return name;
7 };

完全OK

2.知识要点

在node中只有模块作用域,没有全局作用域

require的主要作用

1.加载模块并执行模块中的代码;
2.返回exports对象;

exports对象

1.所有模块都有一个exports对象,默认值是一个空对象`{}`;
2.可以给exports对象添加属性;

小技巧

1.require js文件时可以舍去.js,require("./package.js")等价于require("./package")

原文地址:https://www.cnblogs.com/langyjn/p/9142164.html

时间: 2024-08-10 22:34:09

node.js学习日记(二)node.js的作用域的相关文章

Node.js学习(1):Node.js 和Socket.IO 实现chat

使用 Node.js 和 Socket.IO 构建简单的聊天程序 在node.js根目录下创建文件夹chat,里面添加两个文件:app.js和index.html app.js var fs = require('fs') , http = require('http') , socketio = require('socket.io'); var server = http.createServer(function(req, res) { res.writeHead(200, { 'Cont

Backbone.js学习之二

经历一段自我修炼,终于领悟到Backbone.js的关键知识点,也发现了原来MVC可以在前端这样梦幻的发挥,Backbone.js确实是一个很有魅力的前端MVC框架. 练就一门技术,需要有扎实的功底,从这点,开始认真研究Backbone.js的一些最基本的操作,以便我日后学习能更上一层楼.那就切入主题: 什么是mvc? 简单的理解就是:模型(models),视图(views),控制器(collections).通过视图把浏览器的网址传给控制器,控制器对网址进行解析,然后去模型层获取数据,模型层将

JavaScript 基础学习(二)js 和 html 的结合方式

第一种 使用一个标签 <script type="text/javascript"> js代码; </script> 第二种 使用 script 标签,引入一个外部的 js 文件 需要创建一个js文件写js代码 <script type="text/javascript" src="1.js"></script> 使用第二种方式时候,不需要在script标签里面写js代码 第三种: 与HTML标签中

three.js学习:初学three.js,从立方体开始

目前three.js是浏览器展现3D效果的一个很强大的js工具,遗憾的是没有特别系统而全面的文档(threejs官方文档感觉有些缺漏,可以和WebGL中文网的threejs教程对比着看).好了,根据WebGL中文网的threejs教程开始学习,因为教程里的部分代码已经不适用(过时)了,导致学习的时候有些磕磕绊绊,故记录下自己编写的代码,以便以后查阅. 1.index.html <!DOCTYPE html> <html lang="en"> <head&g

[转]node.js学习笔记(二)

二.express 1.安装 express4 npm --registry=http://registry.npmjs.org install -g express-generator (全局) 2.新建express项目 express -t ejs newsproject cd newsproject npm --registry=http://registry.npmjs.org install 3.启动项目 A 修改app.js增加 其中,通过app.use('/',routes)访问

node.js学习笔记二之版本问题

一.版本说明 进入node.js官网https://nodejs.org/en/download/ 点击上面的[All download options]进入到所有下载列表的地址 下载地址:https://nodejs.org/dist/ 0.是Joyent公司维护.进展缓慢.但是稳定. 4.,5.*都是由网友维护的.相对的进展快,增加和许多新功能. 偶数开头的是稳定版,奇数开头的开发版就是会不断变化更新.为下一个稳定版本做测试差不多的意思. 不过现在都是在nodejs基金会下面.所以咱们在no

Node.JS 学习路线图,Node.JS最佳学习资料

原文出处: 张丹的博客(@Conan_Z) Node.JS 让人心动的技术. 从零开始nodejs系列文章, 将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的 Javascript引擎.chrome浏览器就基于V8,同时打开20-30个网页都很流畅.Nodejs标准的web开发框架Express,可以帮 助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低.非常适合小型网站,个性化网站,我们自己的G

【Node.js学习四】 Node.js回调函数

Node.js 回调函数 Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数. 例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回.这样在执行代码时就没有阻塞或等待文件 I/O 操作.这就大大提高了 Node.js 的性能,可以处理大量的并发请求. 下面对阻塞代码和非阻塞代码分别举出一例

H5+ 移动app学习之二 Native.js

Native.js技术,简称NJS,是一种将手机操作系统的原生对象转义,映射为JS对象,在JS里编写原生代码的技术.如果说Node.js把js扩展到服务器世界,那么Native.js则把js扩展到手机App的原生世界.Native.js不是一个js库,不需要下载引入到页面的script中,也不像node.js那样有单独的运行环境,Native.js的运行环境是集成在5+runtime里的. Native.js for Android封装一条通过JS语法直接调用Native Java接口通道,通过