node.js快读入门(一)

命令行窗口

-开始菜单-运行-CMD-回车
-常用指令:
dir:列出当前目录下的文件
cd 目录名:进入指定目录
cd .:表示当前目录
cd …:表示上一级目录
md 目录名:创建一个文件夹
rm 目录名:删除一个文件夹
文件名:打开该文件

想要在其他地方也能打开文件配置环境变量(Windows系统中变量)
path:所在的地址(高级设置),改完之后要重启
原因:当我们在命令行窗口打开一个文件,或调用一个程序时,系统会首先在当前目录下寻找文件,如果找到了直接打开;如果没有找到会依次到文件变量path路径中寻找;还没有就报错

进程和线程

1.进程:负责为程序运行提供必备的环境
相当于工厂中的车间(存一些代码)
2.线程:是计算机中的最小单位,线程负责执行进程中的程序
相当于工厂中的工人
单线程(js单线程,Chrome浏览器)
多线程

node.js简介

node.js是一个能在服务器运行的js的开发源代码、跨平台js环境。
node采用Google开发的V8引擎运行js代码,使用事件驱动、非阻塞和异步I/O模型等技术提高性能,可以优化应用程序的传输量和规模。
交互流程:
在这里插入图片描述
node.js用js写高性能的web服务器(js单线程、异步)
传统服务器都是多线程的:每进来一个就创建一个线程去处理请求
node服务器是单线程的:处理请求时是单线程,但是在后台有一个I/O线程池
node用途(处理不了访问量太大的)

  • web服务api
  • 实时多人游戏
  • 后端的web服务,例如跨域、服务器端的请求
  • 基于web应用
  • 多客户端的通信,如即时通信

使用node执行js文件

创建一个hello.js文件
在cmd里面,到文件所在目录下,输入node hello.js

node整合webstorm

在idea里面设置

node基础-模块化

ecmaScript标准缺陷:没有模块化系统;标准库较少;没有标准接口;缺乏管理系统。
commonjs规范为了解决模块化,弥补当前JavaScript的缺陷,指定了一个美好的愿景,希望js能够在任何地方运行
commonjs对模块的定义十分简单:
-模块引用 require
-模块定义 创建
-模块标识 在require()引入外部模块时,使用的就是模块标识(比如路径)
注:模块分为两大类
-核心模块:由node引擎提供的模块(核心模块的标识就是,模块的名字) var fs=require(“fs”)
-文件模块:用户自己创建的模块

在node中,一个js文件就是一个模块
在node中,每一个js文件中的js代码都独立运行在一个函数中
而不是全局作用域,所有一个模块中的变量和函数其他模块无法访问:可以通过exports来向外部暴露 exports.x=“我是x”

  • 引入其他模块:在node中,通过require()函数引入外部模块
    require()可以传递一个文件路径作为参数,node将会自动根据路径来引入外部模块,这里路径如果使用相对路径,必须以.或者…开头
    注:使用require()引入模块以后,该函数会返回一个对象,这个对象代表的是引入的模块。var md=require("./module.js")

模块化详解

在node中有一个全局对象global,它的作用和网页中window类似
在全局中创建的变量都会作为global的属性保存
在全局中创建的函数都会作为global发方法保存
-当node在执行模块中代码时,它会首先在代码的最顶部添加如下代码
function(exports,require,module,_filename,dirname){
在代码最底部添加如下代码
}
-实际上模块中代码都包装在一个函数中执行的,并且在函数执行时,同时传递了5个实参
exports:该对象用来将变量或者函数暴露到外部
require:函数,引入外部模块
module:代表当前模块本身 ,exports就是module的属性,既可以使用exports导出或者module.exports
_filename:当前模块的完整路径
dirname:当前模块所在文件夹的完整路径

a=10;
console.log(global.a)//输出为10
var a=10; //证明它是否运行在函数里,arguments伪数组只存在于函数
//arguments.callee:保存当前执行的函数对象
console.log(arguments.callee +“”);//可以看到函数

node基础-exports和module.exports

通过exports只能使用.的方式来暴露内部变量
exports.xxx=xxx
module.exports既可以通过.的方式,也可直接赋值
module.exports.xxx=xxx或者module.exports={}

var a=10;
var b=a;
a++;
console.log(a);//11
console.log(b);//10

var obj=new Object();//指向内存
obj.name='swk';
var obj2=obj;
obj2.name='zbj';
console.log(obj.name);//zbj
console.log(obj2.name);//zbj

//如果obj2=null
console.log(obj.name);//zbj
console.log(obj2);//null
//变量值改变,其他值不跟着变,对象值改变,其他值会跟着变

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值