nodejs的require是如何执行的】的更多相关文章

通常,在Node.js里导入是通过 require函数调用进行的. Node.js会根据 require的是相对路径还是非相对路径做出不同的行为. 相对路径 相对路径很简单. 例如,假设有一个文件路径为 /root/src/moduleA.js,包含了一个导入 var x = require("./moduleB"); Node.js以下面的顺序解析这个导入: 检查/root/src/moduleB.js文件是否存在. 检查/root/src/moduleB目录是否包含一个packag…
最近在项目中需要对nodejs的require关键字做解析,并且替换require里的路径.一开始我希望nodejs既然作为脚本语言,内核提供一个官方的parser库应该是一个稳定可靠又灵活的渠道,然而nodejs里面只一个了一个加载js文件并得到对应的module的能力,module能获取export的函数及其对应的源代码的能力,但是代码已经是闭包过后的,实际上能力很有限. 而我实际上需要的是一个官方的js parser,我希望它是用nodejs写的,轻量的,能得到完整的AST.这样我们就可以…
nodejs开发——require与exports的使用 另一片文章总结:http://www.cnblogs.com/hfultrastrong/p/8036682.html require require函数用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象.模块名可使用相对路径(以./开头),或者是绝对路径(以/或C:之类的盘符开头).另外,模块名中的.js扩展名可以省略.以下是一个例子. var foo1 = require('./foo'); var foo2 =…
require参数类型 http.fs.path等,原生模块 ./mod或../mod,相对路径的文件模块 /pathtomodule/mod,绝对路径的文件模块 mod,非原生模块的文件模块 在进入路径查找之前有必要描述一下module path这个Node.js中的概念.对于每一个被加载的文件模块,创建这个模块对象的时候,这个模块便会有一个paths属性,其值根据当前文件的路径计算得到.Node.js在编译js文件的过程中实际完成的步骤有对js文件内容进行头尾包装.以app.js为例,我们…
var mysql = require('mysql'); var conn = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database:'nodejs', port: }); conn.connect(); //查询 // conn.query('SELECT * from user where name="wangzhiwei"', function(err, result)…
在nodejs中,模块大概可以分为核心模块和文件模块. 核心模块是被编译成二进制代码,引用的时候只需require表示符即可,如(require('net')). 文件模块,则是指js文件.json文件或者是.node文件.在引用文件模块的时候后要加上文件的路径:/.../.../xxx.js表示绝对路径../xxx.js表示相对路径(同一文件夹下的xxx.js),../表示上一级目录.如果既不加/.../.../又不加./的话,则该模块要么是核心模块,要么是从一个node_modules文件夹…
NodeJs中模块的导入和导出,是最基本的概念,但是看了之后,心里还是有一些疑惑的地方,比如: 1.有两个文件:part.js 和 main.js,main.js中要想使用part.js中定义的变量和函数,就必须 var part = require('./part.js‘); 但是,这并不正确,因为 part.js 中我们并没有暴露任何东西,这就要学会 用 exports: module.exports.method = method; 所以,所谓 <导出>就是在module.exports…
NodeJs的Express使用 nodejs事件的监听与事件的触发 TypeScript学习笔记 深入浅出Node.js Nodejs开发Office插件 类百度文库文档上传.转换和展示功能项目开源代码 ------------------------------------------------------------------------------------------------------------------------------------------- N-blog…
node中使用require的时候如果路径是一个文件夹时,或者特殊的情况require('..');require('.'); 这是node实战这本书里说的情况,但是我在node6.9版本中发现不完全是这样,可能是后来做了修改.下面说说在6.9下require路径的过程. 这里以require('.')说明,一个点说明要require当前目录,这时候,node会优先查找package.json这个文件(即使有index.js这个文件也会先被忽略),然后查找package.json文件里的main…
--------------------------------------- check /home/somebody/node_modules/othermodule check /home/somebody/node_modules/othermodule.js check /home/somebody/node_modules/othermodule.json check /home/somebody/node_modules/othermodule.node -------------…
1. wrap up a module using module.exports, name the file to a.js var fun1=function(){ var stylus = require('stylus'); this.hi=function(){ console.log('hi'); } } fun1.prototype.hello=function(){ console.log("abcdefg"); } module.exports=fun1; 2. lo…
nodejs的require是保存在缓存中的,即require一次之后再次require值是不会改变的. 如: a.js var a = 12; exports.a = a; test.js var aa = require('./a.js'); console.log(aa) aa.a = 15; //重新加载还是15 var bb = require('./a.js'); console.log(bb); 执行  node  test.js 得到结果 { a: } { a: } 如果希望重新…
一.简介 Nodejs 有一个简单的模块加载系统.在 Nodejs 中,文件和模块是一一对应的(每个文件被视为一个独立的模块),这个文件可能是 JavaScript 代码,JSON 或者编译过的C/C++ 扩展,例如: /** *foo.js *将这个js文件导出为模块 */ exports.hello = function() { console.log("hello Nodejs!"); } /** *main.js *main.js和foo.js在同一目录下 *在控制台输出:he…
一.功能需求: 通过FreeSWITCH的IVR按键调用相应的脚本文件:nodejs提供很多的模组,可以方便的与其它系统或者进行任何形式的通讯,我的应用是通过nodejs发送http post请求: 由于不太熟悉FreeSWITCH直接调动执行nodejs文件的方法,所以我通过执行Lua脚本,在lua脚本中执行对nodejs文件的调用并执行,具体的设定记录如下: 二.具体设定: ①IVR设定: <entry action="menu-exec-app" digits="…
最近工作中需要用到nodejs编写脚本来顺序执行自动化测试用例,编写代码如下: var runCommand = function (command){ child_process.exec(command,function (error, stdout, stderr) { if (stdout !== null) { console.log('exec stdout: ' + stdout); } if (error !== null) { console.log('exec error:…
node.js模块 在node.js开发中一个文件就可以认为是一个模块. 一.node.js模块分类 核心模块Code Module.内置模块.原生模块 fs http path url ... 所有内置模块在安装node.js的时候就已经编译成二进制文件,可以直接加载运行(速读较快) 部分内置模块,在node.exe这个进程启动的时候就已经默认加载了,所以可以直接使用. 文件模块 按文件后缀来分 如果加载时,没有指定后缀名,那么就按照如下顺序依次加载相应模块 1.js 2.json 4.nod…
1.搭建nodejs环境. 2.执行npm install nodegrass命令. 3.引入模块,var ng= require(nodegrass); 4.下面先看nodegrass底层的get方法的具体实现,代码如下: //Get Method Request //Support HTTP and HTTPS request,and Automatic recognition //@Param url //@Param callback NodeGrass.prototype.get =…
nodejs做web服务器,打开80时报错:Error: listen EACCES 0.0.0.0:80 80端口监听失败,是因为1024以下的端口需要root权限,需要sudo或su之后执行.但这又带来了NODE_PATH无效.权限等其他问题.权限问题通过chmod可解决. NODE_PATH无效,会导致通过-g全局安装的模块引用不了.需要在profile中配置:export NODE_PATH="/usr/local/lib/node_modules" profile有几个:在/…
安装好nodejs之后 在命令行中直接运行:node -v //若安装成功则显示版本号 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World~~\n'); }).listen(1337, "127.0.0.1"); console.log('Server run…
linux下 多亏这一篇文章= =我就卡死在文章所说的这个点里 附大牛链接:http://blog.sitearth.com/nodejs%E4%B8%8A%E4%BD%BF%E7%94%A8mongodb/ 1.安装nodejs 这个不难.从官网下载tar.gz安装包.然后 解压后 ./configure make make install 然后写一个xx.js就可以执行了 2 .安装npm 这个也不难 直接用npm官网提供的 curl http://npmjs.org/install.sh…
一.路由机制(静态资源文件处理) 1.1 Nodejs没有根目录 MIME类型:http://www.w3school.com.cn/media/media_mimeref.asp 在Apache中,它会自动将htdocs文件夹提供静态化路由服务. 但是Nodejs没有这个机制. 在文件夹中创建这样的层次目录: ┠ www ┋┠ a ┋┋┠ b ┋┋┋┠ page.html ┠ 11-Nodejs没有根目录容器.js 访问的时候,可以看见page.html页面: var http = requi…
一.NodeJS简介 NodeJS是开发服务器后台的东西,和PHP.JavaEE.python类似,和传统的浏览器的关注DOM的JS完全不同,将JavaScript触角伸到了服务器端.内核是Chrome浏览器的V8引擎,解析JavaScript的效率是非常快的. 创始人. 在不升级服务器配置的情况下,如何用软件手段来提升服务器性能:Ryan Dahl大致的感觉到了解决问题的关键是要通过事件驱动和异步I/O来达成目的. 传统的服务器模型:当我们做I/O操作的时候(I表示读,O表示写),CPU被磁盘…
前言 说到import和require,大家平时开发中一定不少见,尤其是需要前端工程化的项目现在都已经离不开node了,在node环境下这两者都是大量存在的,大体上来说他们都是为了实现JS代码的模块化,那为什么会出现两种方案呢,又有什么不同呢? 模块化的不同解决方案 追根溯源,JS这门脚本语言设计伊始就是没有模块化的,所以早期的全局变量容易造成命名冲突.但随着web项目越来越大,JS的代码量也与日俱增,于是社区就自发约定了几种模块化的方案:requirejs遵循AMD,seajs遵循CMD,no…
环境:Mac OSX 10.10.3 NodeJS:v0.12.2 NodeJs 安装指需要 1.执行 npm install xxxx -g 时 需要执行 sudo npm install xxxx -g 否则 会提示Please try this command as root/administrator 2.安装Package Control 时候 会发现跟Window 上面会有些不一样 是在下图中位置的 现在安装Zen Coding 需要 command+shift+p ->输入IP->…
https://stackoverflow.com/questions/35625593/how-does-webpacks-require-work wepback的require函数调用类似于nodejs cmd 的require调用.https://nodejs.org/api/modules.html#modules_all_together 以上链接可以清除地看到require被调用时他是如何找到require函数应该返回的对象或函数的.如果你require 'jquery',他首先查…
虽然nodejs的require('child_process').execSync可以使用shell,但其实问题特别多.尤其是符号和语法冲突,可读性也很差,只能完成一些小规模的shell使用. const exec = require('child_process').execSync // 执行,删除./dist目录下所有的文件夹 exec('rm -rf ./dist/* -type d') // 获取返回值 var last = exec('echo 123'); last = last…
Node.js的进程管理   node遵循的是单线程单进程的模式,node的单线程是指js的引擎只有一个实例,且在nodejs的主线程中执行,同时node以事件驱动的方式处理IO等异步操作.node的单线程模式,只维持一个主线程,大大减少了线程间切换的开销.   但是node的单线程使得在主线程不能进行CPU密集型操作,否则会阻塞主线程.对于CPU密集型操作,在node中通过child_process可以创建独立的子进程,父子进程通过IPC通信,子进程可以是外部应用也可以是node子程序,子进程…
Node.js 前言: 2009年面世 nodejs.org 官网 https://www.npmjs.com/ 模块社区 github.com 仓库 stackoverflow.com  问答社区 基于chrome浏览器V8引擎.C++语言编写的,本质上是Js的运行环境: 可以解析js代码: 提供系统级别的api: 1.文件的读写 2.进程的管理 3.网络通信 安装: linux 上安装nodejs mac 上安装node: 升级到mac系统到最新: 下载安装 xcode 集成开发环境: xc…
阅读目录 一:nodejs进程进化及多进程架构原理 二:node中child_process模块实现多进程 三:父子进程间如何通信? 四:理解cluster集群 回到顶部 一:nodejs进程进化及多进程架构原理 NodeJS是基于chrome浏览器的V8引擎构建的,它是单线程单进程模式,nodeJS的单线程指js的引擎只有一个实列.且是在主线程执行的,这样的优点是:可以减少线程间切换的开销.并且不用考虑锁和线程池的问题. 那么nodejs是单线程吗?如果严格的来讲,node存在着多种线程.比如…
[摘要] 集群管理模块cluster浅析 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 概述 cluster模块是node.js中用于实现和管理多进程的模块.常规的node.js应用程序是单线程单进程的,这也意味着它很难充分利用服务器多核CPU的性能,而cluster模块就是为了解决这个 问题的,它使得node.js程序可以以多个实例并存的方式运行在不同的进程中,以求更大地榨取服务器的性能.node.js在官方示例代码中使用worker实例…