NodeJs基础配置、核心概念与学习路线回顾
2017-12-12 22:07
567 查看
Nodejs把前端开发带入一个全新的阶段,他使得js能够跑在服务端上,大大强化了js这门语言的可塑性。
OK,环境配置不提,配置好了以后,直接来跑一些简单的demo
以前一直没搞懂nodejs复杂的目录(其实是不懂linux),老把文件目录和运行时的目录搞错。
在gitbash下,先进入对应的目录,例如我的js文件在 D:\node\nodejs下,那么应该:
这样就OK啦,如果想跟IDE进行配合也不是不行,步骤如下:
1.在node.exe同级下建立project,命名为 nodejs :
2.在IDE中添加新建项目,添加刚才的文件夹路径:
欧~~尅!
接着,在IDE里面新建几个js文件,然后在我们的Node上面跑一跑(CreateServer那个DEMO就不做了)。
建立第一个文件:hello.js (null文件)
建立第二个文件:world.js(null文件)
两个文件可以在同级目录,也可以不在。
将下列代码填入hello.js:
打开gitBash,找到IDE中工程的目录(最好把js文件放在工程目录下即可,或者单独建一个js文件夹):
然后输入:
然后将下列代码填入 world.js :
运行之,得出下图:
可以看到,两次的运行结果一样。hello.js的运行结果为hello不足为奇,那么world.js为什么也输出hello呢?
这是因为在hello.js中,打包出来一个公共模块,
而在world.js中,引入了这个模块,并且赋值给变量world:
如果将hello.js改进一下,
运行
同时更改world.js:
运行
这说明,引入模块时,只有第一次引入时会初始化模块。
模块的集合:包(package)
所谓的包,就是内部集成了好多模块,主要使用一个入口文件作为包的入口,该文件的导出对象作为包的公有模块:
此时,main.js是包的入口和导出对象模块,在main.js中,很有可能引入了head.js、body.js、footer.js的导出模块,然后写入一些功能和方法,最后导出一个公有方法,供其他的包或者模块使用。
当模块的文件名是index.js,加载模块时可以使用模块所在目录的路径代替模块文件路径,因此接着上例,以下两条语句等价。
当引用包的入口文件时,require(‘./node/nodejs/main.js’)这样给人感觉仿佛在引用一个模块,而不是整个包。
解决方法是,将Main.js命名为index.js,这样,在引入包的入口文件时,直接填写包入口文件的路径:
这样处理后,就只需要把包目录路径传递给require函数,感觉上整个目录被当作单个模块使用,更有整体感。
也可以用json文件来声明入口:
这样,在引入包的入口文件时 require(‘./node/nodejs’)时,会优先查找json文件,并从中读取入口配置,注意,此时的json一定要在引用的路径之下。
OK,环境配置不提,配置好了以后,直接来跑一些简单的demo
以前一直没搞懂nodejs复杂的目录(其实是不懂linux),老把文件目录和运行时的目录搞错。
在gitbash下,先进入对应的目录,例如我的js文件在 D:\node\nodejs下,那么应该:
$ cd d: $ cd node/nodejs
这样就OK啦,如果想跟IDE进行配合也不是不行,步骤如下:
1.在node.exe同级下建立project,命名为 nodejs :
2.在IDE中添加新建项目,添加刚才的文件夹路径:
欧~~尅!
接着,在IDE里面新建几个js文件,然后在我们的Node上面跑一跑(CreateServer那个DEMO就不做了)。
建立第一个文件:hello.js (null文件)
建立第二个文件:world.js(null文件)
两个文件可以在同级目录,也可以不在。
将下列代码填入hello.js:
function hello(){ console.log("hello") } exports.hello =hello();
打开gitBash,找到IDE中工程的目录(最好把js文件放在工程目录下即可,或者单独建一个js文件夹):
然后输入:
$ node hello.js
然后将下列代码填入 world.js :
var world = require("./hello.js"); world.hello
运行之,得出下图:
可以看到,两次的运行结果一样。hello.js的运行结果为hello不足为奇,那么world.js为什么也输出hello呢?
这是因为在hello.js中,打包出来一个公共模块,
exports.hello =function(){....}
而在world.js中,引入了这个模块,并且赋值给变量world:
var world = require('./hello.js') /*引入【hello.js里面打包的 模块】*/ /*此时,world相当于拥有共有模块的所有属性和方法了,那么此时,这个 world有一个方法为hello,我们调用这个hello方法,world.hello ,自然 而然输出hello*/
如果将hello.js改进一下,
var i=0 ; function hello(){ ++i; console.log("hello for " + i) };
运行
node hello.js输出: //hello for 1
同时更改world.js:
var world = require('./hello.js') var world1 = require('./hello.js') world.hello world1.hello
运行
$node world.js输出//hello for 1甭管运行几次,都是这个结果
这说明,引入模块时,只有第一次引入时会初始化模块。
模块的集合:包(package)
所谓的包,就是内部集成了好多模块,主要使用一个入口文件作为包的入口,该文件的导出对象作为包的公有模块:
一 ---nodejs |一 ----js | -----main.js | ------head.js | ------body.js | ------footer.js |一 ------package.json
此时,main.js是包的入口和导出对象模块,在main.js中,很有可能引入了head.js、body.js、footer.js的导出模块,然后写入一些功能和方法,最后导出一个公有方法,供其他的包或者模块使用。
当模块的文件名是index.js,加载模块时可以使用模块所在目录的路径代替模块文件路径,因此接着上例,以下两条语句等价。
当引用包的入口文件时,require(‘./node/nodejs/main.js’)这样给人感觉仿佛在引用一个模块,而不是整个包。
解决方法是,将Main.js命名为index.js,这样,在引入包的入口文件时,直接填写包入口文件的路径:
var cat = require('./js/index.js'); var cat = require('/js'); //上面两条语句等价
这样处理后,就只需要把包目录路径传递给require函数,感觉上整个目录被当作单个模块使用,更有整体感。
也可以用json文件来声明入口:
{ 'main':'./main.js' }
这样,在引入包的入口文件时 require(‘./node/nodejs’)时,会优先查找json文件,并从中读取入口配置,注意,此时的json一定要在引用的路径之下。
相关文章推荐
- 37 java技术体系基础、tomcat核心概念及使用初步、tomcat配置与应用
- 【学习笔记】3D图形核心基础精炼版-1:入门概念
- [置顶] DNS学习笔记-服务的配置与基础概念
- Ext学习-基础概念,核心思想介绍
- 【学习笔记】3D图形核心基础精炼版-3:屏幕中的三维坐标概念
- C#学习笔记——基础概念回顾
- 【Java基础 零】---学习路线和基本概念
- NodeJS学习笔记--NodeJS+Express基础概念梳理记录
- Tomcat目录结构配置文件基础学习
- WAS管理配置学习笔记--应用服务器的概念和组成
- osworkflow基础入门部分汇总(基本概念,包用途分析及代码片断,表结构分析,主要优势,核心概念)
- 网络基础学习之二十路由器的配置
- J2EE学习笔记三:EJB基础概念和知识
- 学习Java的30个基本概念-Java基础-Java-编程开发
- SharpDevelop解析与学习心得之二------重要概念及核心程序的启动
- SilkTest 学习整理(1)基础概念
- Frame-Relay基础及配置学习笔记
- IBatis.net学习笔记_基础配置
- C#学习基础概念二十五问 11-15
- CCIE学习(3)――基础知识回顾