Node.js和JavaScript:

核心都是ECMAScrit,比如数据类型,语法结构,内置对象等等。

但是在js中顶层是window

在node中的不存在这个window(console.log(this)的结果是{}),它的顶层是全局对象(global),但是,当在node.js中定义一个a时。通过却global.a访问不了a。

javascript

包括ECMAScript、DOM和BOM

而node.js包括

ECMAScript、OS(操作系统)、file(文件)、net(网络)和database(数据库)。

前者用于运行浏览器,后者用来操作系统。

简单的说 Node.js 就是运行在服务端的 JavaScript。

  • Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。

  • Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。


第一段node.js程序

新建一个hello.js文件

console.log('hello nod.js!');

去官网下载编译器安装包。安装完之后双击出现命令行

也可以通过win+R打开cmd,输入node回车



表示安装没问题。退出:Ctrl+D或者Ctrl+C两次。

看版本(没有进入node.js时候):node -v



现在允许之前的hello.js文件,node 路径文件名即可、



路径比较麻烦的话,可以如下操作



这样就可以通过相对路径进行访问

webstorm环境下使用node.js

以下通过webstorm来操作node.js

打开一个空文件夹以创建项目

在settings里面添加



加载node.js的npm

点确定。就可以右键run运行node.js了。

模块的使用

var a=100

这个a是属于模块的,不是全局变量。一个文件就是一个模块。每个模块都有自己的作用域。

我们使用var 声明的一个变量,他并不就是全局的,而是属于当前模块。

你想声明一个全局变量,必须global.a=200

每个文件都有一个独特的__filename属性

//__filename:当前文件被解析之后的绝对路径(双下划线)
console.log(__filename);

模块加载

在javascript的书写方法下引入其它js是通过<script>而在当前,用的是:

在1.js的同一个目录下新建一个2.js

写入

console.log('这是模块2.js')

保存

然后回到1.js输入reruire('./2.js')

ctrl+shift+F10.发现模块2.js的内容被打印出来了。

模块的加载机制

require('模块路径')

  • 模块路径问题:可以写相对,也可以写绝对。相对路径同目录下必须加上../如果直接写,加载的是node.js中的核心模块。或者是node_modules
  • 你可以写require(../2),可以查找到,首先按照模块文件名称进行经查找。如果没有找到,会在模块名称后加上.js后缀进行查找。
  • 如果还未查找到,则会查找.json后缀
  • 再找不到就是查找.node后缀,还没有的话再弹出错误。

module和exports

如何调用其它模块内的变量?

在2.js中写入var a=100,在1.js中想要用到2.js中的a,不能在require 2.js后,直接console.log(a)!!——然而你可以:

如果模块能够访问另一个模块中的变量。可以:

  • 把变量作为global对象属性(global.a=100)——不推荐此做法。(全局污染)
  • 使用模块接口: module——保存和当前模块有关的信息。module下有一个子对象:exports对象。可以通过它把一个模块的局部变量输出到别的模块中。

    在2.js文件写入:
var a=100;
module.exports.a=a;

而1.js这样写:

var m=require('./2');//返回值其实就是被加载模块中的module.exports
console.log(m);

返回的是{a:100}.也就是说,require('./2')返回的是所有在模块2中被定义的值的集合。在模块作用域,还有内置的模块对象exports——其实就是module.exports

var a=100;
module.exports.a=a;
console.log(module.exports===exports)//返回true

注意不要破坏引用关系,如果2.js这样写:

var a=100;
module.exports.a=a;
module.exports=[1,2,3];

1.js引入2.js后,就找不到a了。

Node.js入门笔记(1):基本概念的更多相关文章

  1. Node.js入门笔记(6):web开发方法

    使用node进行web开发 用户上网流程: 表面上看:打开浏览器--输入网址--跳转--上网. 背后的过程是什么呢? http请求网址到指定的主机--服务器接收请求--服务器响应内容到用户浏览器--浏 ...

  2. Node.js入门笔记(5):案例两则

    案例分析:前端自动化 1. 实现一个自动创建前端项目文件的js 通过node.js自动创建前端项目目录,包括js目录,js目录css目录,index.html和对应的内容. 初步的代码如下: var ...

  3. Node.js入门笔记

    第一步自然是安装了.我是用Webstorm这个ide,安装分2步: 1.安装nodejs,下载Windows下的安装版本号.注意是以msi为扩展名的,然后下一步.没啥好说的,下载地址例如以下: 32位 ...

  4. Node.js入门笔记(2):全局对象(1)

    以下将以API文档为基础进行分析学习 global对象 这些对象在所有模块里都可用.有些对象不是在全局作用域而是在模块作用域里,这些情况下面文档都会标注出来. __filename--返回当前模块文件 ...

  5. Node.js入门笔记(4):文件系统(fs)

    文件系统(FileSystem) 文件系统模块 对于文件无外乎创建修改添加. File System - 文件系统模块 - require('fs') fs模块是核心模块,需要使用require导入后 ...

  6. Node.js入门笔记(3):全局对象(2)

    buffer 用于更好操作二进制数据,他是一个全局变量.类似数组. var a=new Buffer(); buffer类的三种实现 第一种创建方式 new Buffer(size);size[Num ...

  7. Node.js 入门资料

    小毛驴的阿凡提的 Node.js 入门笔记 http://www.cnblogs.com/Afanty/category/1007304.html

  8. 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记

    近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...

  9. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

随机推荐

  1. jar命令的用法详解

    本文详细讲述了JAR命令的用法,对于大家学习和总结jar命令的使用有一定的帮助作用.具体如下: JAR包是Java中所特有一种压缩文档,其实大家就可以把它理解为.zip包.当然也是有区别的,JAR包中 ...

  2. GIT/node使用

    一. 为不同域名的库自动保存不同的用户名和密码 比如 公司的库是 http://source.sohu.com,另一个是 http://www.github.com,命令行中分别两个命令就搞定了 gi ...

  3. Web报表工具JS开发之日期校验

    在报表开发过程中,我们常常需要对查询界面进行日期校验.例如有两个参数:开始日期和结束日期,我们要校验的是:开始日期与结束日期不能为空,结束日期必须在开始日期之后以及结束日期必须在开始日期后的某个时间段 ...

  4. oracle 倒库后insert id冲突的问题

    错误为:ORA-00001: unique constraint violated 把test库的数据导入到另一个库后,忘记修改自增id sequence的nextval了,因此,当前的数据库中数据和 ...

  5. winform/窗体鼠标事件编程中的几个问题

    1.进行.net窗体的开发,经常用到鼠标事件,如MouseDown/MouseUp/MouseMove/MouseClick等.可是有时候给控件添加鼠标事件,就是不响应,怎么办呢! 答案:1.控件是否 ...

  6. Python学习记录day4

    a:focus { outline: 5px auto -webkit-focus-ring-color } a:hover,a:active { outline: 0 } a { color: #0 ...

  7. [转]ArcIMS 中地图坐标参考设置(ArcGIS Unknown Spatial Reference)

    "ArcGIS Unknown Spatial Reference"问题: shp文件在Arcgis打开后经常因为原有坐标系无法识别而丢失信息,出现以下提示信息: "Un ...

  8. 【原】迎接微信winphone 5.0 版本的IE10样式兼容

    微信 Android 5.1 和 iPhone 5.1 已正式发布了,据说本12月底,微信将推出 Winphone 5.0版本,全面支持微信支付,它绑定 IE10 浏览器,那么做微信公众号的 H5 页 ...

  9. uva 140 bandwidth (好题) ——yhx

     Bandwidth  Given a graph (V,E) where V is a set of nodes and E is a set of arcs in VxV, and an orde ...

  10. 洛谷P2412 查单词 [trie树 RMQ]

    题目背景 滚粗了的HansBug在收拾旧英语书,然而他发现了什么奇妙的东西. 题目描述 udp2.T3如果遇到相同的字符串,输出后面的 蒟蒻HansBug在一本英语书里面找到了一个单词表,包含N个单词 ...