微星450m不兼容芝奇内存条条跟B250主板不兼容吗?

您现在的位置: -->
--> nodejs教程:配置nodejs.exe的windows目录结构
nodejs教程:配置nodejs.exe的windows目录结构
上篇说了,可是用起来真的不爽,很多人在微博也说有.exe文件,于是试着配置下,发现nodejs.exe+github做插件管理,是在windows下面搭建nodejs服务器的不错选择。下面结合自身实践,简单说说。nodejs.exe path配置首先去官方下载最新版的nodejs.exe。下载后随便找个地方放,例如D:
ode。有两种方法配置PATH,1、直接把nodejs.exe复制到windows文件夹下,这样就不用在环境变量里面配置PATH了2、配置PATH,在我的电脑属性里面找到环境变量,然后在系统变量中更改Path的属性添加;D:
ode,即放置nodejs.exe的目录地址,注意前面的”;”不能少nodejs插件在windows下的管理nodejs的有自己的插件管理包npm,可是在windows系统下不能使用,不过鉴于大多数的nodejs的插件都是通过github管理的,所以我们只要安装个github客户端就可以了,如果有必要还可以安装TortoiseGit,作为图形化Git管理。nodejs的插件都是放在node_modules的文件夹下,所以我们在node文件夹下建立node_modules的文件夹,将下载的nodejs的插件都放在这个文件夹下,或者直接在node_modules文件夹中直接git clone出来最新版的插件即可。nodejs的插件引用方法 &
& nodejs教程:配置nodejs.exe的windows目录结构 上篇说了,可是用起来真的不爽,很多人在微博也说有.exe文件,于是试着配置下,发现nodejs.exe+github做插件管理,是在windows下面搭建nodejs服务器的不错选择。下面结合自身实践,简单说说。nodejs.exe path配置首先去官方下载最新版的nodejs.exe。下载后随便找个地方放,例如D:
ode。有两种方法配置PATH,1、直接把nodejs.exe复制到windows文件夹下,这样就不用在环境变量里面配置PATH了2、配置PATH,在我的电脑属性里面找到环境变量,然后在系统变量中更改Path的属性添加;D:
ode,即放置nodejs.exe的目录地址,注意前面的”;”不能少nodejs插件在windows下的管理nodejs的有自己的插件管理包npm,可是在windows系统下不能使用,不过鉴于大多数的nodejs的插件都是通过github管理的,所以我们只要安装个github客户端就可以了,如果有必要还可以安装TortoiseGit,作为图形化Git管理。nodejs的插件都是放在node_modules的文件夹下,所以我们在node文件夹下建立node_modules的文件夹,将下载的nodejs的插件都放在这个文件夹下,或者直接在node_modules文件夹中直接git clone出来最新版的插件即可。nodejs的插件引用方法nodejs代码中require直接加上node_modules里面的文件夹名称即可使用插件了(否则需要加上路径)。下面是我nodejs的路径截图,可以参考下。 nodejs windows目录结构这样通过简单的配置,windows下就可以使用nodejs了。
觉得文章有用?立即:
和朋友一起 共学习 共进步!
建议继续学习:
QQ技术交流群:,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
作者:&&&&来源:
发布时间: 14:00:21
建议继续学习
近3天十大热文
rightLowest
& 2009 - 2017模块路径解析规则
有经验的 C 程序员在编写一个新程序时首先从 make 文件写起。同样的,使用 NodeJS 编写程序前,为了有个良好的开端,首先需要准备好代码的目录结构和部署方式,就如同修房子要先搭脚手架。本章将介绍与之相关的各种知识。
模块路径解析规则
我们已经知道,require函数支持斜杠(/)或盘符(C:)开头的绝对路径,也支持./开头的相对路径。但这两种路径在模块之间建立了强耦合关系,一旦某个模块文件的存放位置需要变更,使用该模块的其它模块的代码也需要跟着调整,变得牵一发动全身。因此,require函数支持第三种形式的路径,写法类似于foo/bar,并依次按照以下规则解析路径,直到找到模块位置。
如果传递给 require 函数的是 NodeJS 内置模块名称,不做路径解析,直接返回内部模块的导出对象,例如
require('fs')。
node_modules 目录
NodeJS 定义了一个特殊的 node_modules 目录用于存放模块。例如某个模块的绝对路径是 /home/user/hello.js,在该模块中使用 require('foo/bar') 方式加载模块时,则 NodeJS 依次尝试使用以下路径。
/home/user/node_modules/foo/bar
/home/node_modules/foo/bar
/node_modules/foo/bar
NODE_PATH 环境变量
与 PATH 环境变量类似,NodeJS 允许通过 NODE_PATH 环境变量来指定额外的模块搜索路径。NODE_PATH 环境变量中包含一到多个目录路径,路径之间在 Linux 下使用:分隔,在 Windows 下使用;分隔。例如定义了以下 NODE_PATH 环境变量:
NODE_PATH=/home/user/lib:/home/lib
当使用 require('foo/bar')的方式加载模块时,则 NodeJS 依次尝试以下路径。
/home/user/lib/foo/bar
/home/lib/foo/bar从上一篇文章中,我们知道JavaScript进化的过程中,非常重要的一个里程碑是CommonJS定制相关的规范,其中一个重要的就是模块,这篇文章就来研究下NodeJS对模块的实现。Node.js的require机制NodeJS的模块分为两类,一类为原生模块,可参考https://nodejs.org/api/ ,一类为文件模块。原生模块在NodeJS源代码编译的时候编译进了二进制执行文件,加载的速度最快。另一类文件模块是动态加载的。但是NodeJS对原生模块和文件模块都进行了缓存,于是在第二次require时是不会有重复开销的。其中原生模块都被定义在lib目录下。文件模块加载的工作主要由原生模块module来实现和完成,该原生模块在启动时已经被加载。比如我们运行node app.js,其实就让module模块加载app.js文件模块,执行module.runMain静态方法,如下:// bootstrap main module.
Module.runMain = function () {
// Load the main module--the command line argument.
Module._load(process.argv[1], null, true);
};其中_load静态方法在分析文件名之后执行: var module = new Module(id, parent);
module.load(filename);load加载模块,NodeJS会根据后缀名来决定加载方法:.js。通过fs模块同步读取js文件并编译执行;.node。通过C/C++进行编写的Addon。通过dlopen方法进行加载;.json。读取文件,调用JSON.parse解析加载;其中在编译js后缀的模块文件时实际会对js文件中内容进行包装,包装的app.js会变成如下形式:(function (exports, require, module, __filename, __dirname) {
& &// app.js的原始内容
});返回一个具体的function对象,运行该function对象传入module对象的exports、require方法、module、文件名、目录名,这也是为什么app.js中有exports、require、module这些变量。(module变量是这个模块对象自身,exports是在module的构造函数中初始化的一个空对象{},而不是null)load方法在载入、编译、缓存了module后,返回module的exports对象,这也是为什么只有定义在exports对象上的方法才能被外部调用的原因。(模块载入机制定义在lib/module.js文件中)模块加载的优先级:缓存模块 & 原生模块 & 文件模块。文件模块的路径对于每一个被加载的文件模块,创建这个模块对象的时候,这个模块便会有一个paths属性,即module.paths,可以通过如下方式查看:console.log(module.paths);除此之外还有一个全局module path,是当前node执行文件的相对目录(../../lib/node),如果在环境变量中设置HOME目录和NODEPATH目录,整个路径还会包含这两个目录下的.nodelibraries于.node_modules。根据相关路径进行查找,如果查找不到文件,将尝试将require的参数作为一个包来进行查找,读取目录下的package.json文件,取得main参数指定的文件NPM基于包规范CommonJS定义了JavaScript的包结构规范,而NPM的出现则是实现CommonJS的包规范,解决了包的安装卸载、依赖管理、版本管理等问题。一个符合CommonJS规范的包应该是如下这种结构:一个package.json文件应该存在于包顶级目录下;二进制文件应该包含在bin目录下JavaScript代码应该包含在lib目录下文档应该在doc目录下单元测试应该在test目录下从上面require的查找过程可以知道,NodeJS在没有找到目标模块文件时,会将当前目录当做一个包来尝试加载,所以在package.json文件中最重要的一个字段就是main。对于require只需要main属性即可,但实际除此之外包管理还需要接受安装、卸载、依赖管理、版本管理等流程,所以package.json文件还定义了如下一些必须的字段:name。包名,需要在NPM上是唯一的。不能带有空格description。包简介。通常会显示在一些列表中version。版本号。一个语义化的版本号,通常为x.y.z。该版本号十分重要,常常用于一些版本控制的场合keywords。关键字数组。用于NPM中的分类搜索maintainers。包维护者的数组。数组元素是一个包含name、email、web三个属性的JSON对象contributors。包贡献者的数组。第一个就是包的作者本人。bugs。一个可以提交bug的URL地址。可以是邮件地址licenses。包所使用的许可证repositories。托管源代码的地址数组dependencies。当前包需要的依赖。这个属性十分重要,NPM会通过这个属性,帮你自动加载依赖的包一些额外的字段,如bin、scripts、engines、devDependencies、author。这里可以重点提及一下scripts字段,scripts字段的对象指明了在进行操作时运行哪个文件,或者执行拿条命令。如下为一个较全面的scripts案例:&scripts&: {
& &&install&: &install.js&,
& &&uninstall&: &uninstall.js&,
& &&build&: &build.js&,
& &&doc&: &make-doc.js&,
& &&test&: &test.js&,
}Node.js模块与前端模块的异同通常有一些模块可以同时适用于前后端,但是在浏览器端通过script标签的载入JavaScript文件的方式与Node.js不同。Node.js在载入到最终的执行中,进行了包装,使得每个文件中的变量天然的形成在一个闭包之中,不会污染全局变量。而浏览器端则通常是裸露的JavaScript代码片段。所以为了解决前后端一致性的问题,类库开发者需要将类库代码包装在一个闭包内。以下代码片段抽取自著名类库underscore的定义方式。(function () {
& &// Establish the root object, `window` in the browser, or `global` on the server.
& &var root =
& &var _ = function (obj) {
& & & & & &return new wrapper(obj);
& &if (typeof exports !== 'undefined') {
& & & &if (typeof module !== 'undefined' && module.exports) {
& & & & & &exports = module.exports = _;
& & & &exports._ = _;
& &} else if (typeof define === 'function' && define.amd) {
& & & &// Register as a named module with AMD.
& & & &define('underscore', function () {
& & & & & &return _;
& & & &});
& &} else {
& & & &root['_'] = _;
}).call(this);首先,它通过function定义构建了一个闭包,将this作为上下文对象直接call调用,以避免内部变量污染到全局作用域。续而通过判断exports是否存在来决定将局部变量绑定给exports,并且根据define变量是否存在,作为处理在实现了AMD规范环境(monjs.org/wiki/Modules/AsynchronousDefinition) 下的使用案例。仅只当处于浏览器的环境中的时候,this指向的是全局对象(window对象),才将变量赋在全局对象上,作为一个全局对象的方法导出,以供外部调用。所以在设计前后端通用的JavaScript类库时,都有着以下类似的判断:if (typeof exports !== &undefined&) {
& &exports.EventProxy = EventP
& &} else {
& &this.EventProxy = EventP
即,如果exports对象存在,则将局部变量挂载在exports对象上,如果不存在,则挂载在全局对象上。对于更多前端的模块实现可以参考国内淘宝玉伯的seajs(/),或者思科杜欢的oye(/oye/)参考:q.com/cn/articles/nodejs-module-mechanism//p/1669.html长按关注公众号系列博文干货长按识别转账,知道你不会,但万一你忍不住咧无论1元、2元或任何金额,宝哥都感激不尽技术爱好栈(gh_f742fffbd80e)
 文章为作者独立观点,不代表大不六文章网立场
gh_f742fffbd80e技术无边界,所有个人学过的、用过的、见过的技术干货分享,和大家一起记录、学习、交流,开拓我们的技术边界热门文章最新文章gh_f742fffbd80e技术无边界,所有个人学过的、用过的、见过的技术干货分享,和大家一起记录、学习、交流,开拓我们的技术边界&&&&违法和不良信息举报电话:183-
举报邮箱:Copyright(C)2017 大不六文章网}

我要回帖

更多关于 微星450m不兼容芝奇内存条 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信