引言
nodejs搭建
起步
nodejs语法
简单的说 Node.js
就是运行在服务端的 JavaScript
。
Node.js
是一个基于Chrome JavaScript 运行时建立的一个平台。
Node.js
是一个事件驱动I/O服务端JavaScript
环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
其实就是js的后台版本 ,普通的js用的是前台,而nodejs是在服务器端运行的
简单的说 Node.js 就是运行在服务端的 JavaScript。
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
一般nodejs不会独立开发
https://nodejs.org/ 建议选择current版本
换源(npm下载比较慢 可以使用国内的镜像cnpm)
npm install cnpm -g --registry=https://registry.npm.taobao.org
默认情况下,我们在执行npm install -g XXXX时,下载了一个全局包,这个包的默认存放路径位C:\Users\Administrator\AppData\Roaming\npm\node_modules
下,可以通过CMD指令npm root -g
查看
但是有时候我们不想让全局包放在这里,我们想放在指定目录下
在目录下下新建两个文件夹
node_global
全局包下载存放
node_cache
node缓存
有两种方式修改:
npm config set prefix "C:\node\node_global"
npm config set cache "C:\node\node_cache"
或者在nodejs的安装目录中找到node_modules\npm\.npmrc
文件,修改如下:
prefix =C:\node\node_global
cache = C:\node\node_cache
然后将新的文件夹路径配置到环境变量的path
中
D:\node\node_global
D:\node\node_cache
npm简单操作:
安装
npm install xxx
npm i xxx
删除
npm uninstall xxx
npm un xxx
cnpm i xxx / cnpm un xxx
怎么卸载低版本?(采坑)
1.卸载node本身、删除nodejs目录
2.手动删除C:\Program Files\nodejs\node_modules(如果有的话)
3.手动删除C:\users\你\node_modules(如果有的话)
学习nodejs刚开始看官网的时候就是一大堆的相应依赖包的使用,让我自己感到无从下手不知道从哪里看起,后期也找了很多相关的资料才慢慢有些头绪。
官网上提供了很多依赖包,如果你不能把所以的依赖包都记下来那么可以先记住写常用的依赖包,起码能让你做个小demo也行,后期遇到什么功能再去官网上找相应的依赖,反正官网又不会跑。
其实对于nodejs入门来说,不要想的有多么的难,简单的讲,学习nodejs主要就是使用相应的依赖包结合nodejs的语法来实现具体的功能。
对于前端小伙伴来说你要是已经掌握了ES5/ES6,那么nodejs的大多数的语法你都可以看懂的,nodejs本省就是支持ES6的,所以你可以放心大胆的去写,并且不用考虑到浏览器的兼容问题,node是运行在服务端滴~,浏览器兼容 不好意思管不到它。
其实很简单,在当前项目目录下 打开命令行 键入 node server.js
就可以运行server.js了,前提在该目录下你有一个server.js
文件
单纯的执行一个console.log,那要是让nodejs知道岂不是会很生气?,nodejs我们学习它在项目中主要是为了搭建一个服务器,最起码咱先起个服务,监听一个端口试试。
如何启动一个服务呢? 对,是用相应的依赖包,nodejs中本身就内置了很多依赖包,我们通过require('xxx')
这种形式来引入
const http = require('http'); //引入http模块
let server = http.createServer(function(req,res){ //创建一个服务
res.write('aaa');
res.end();
});
server.listen(8888) //监听 端口8888
这样一个端口问8888
的服务完成了,回调函数中的req,res
接受和相应相应信息。
一个nodejs项目,最基础的就是起一个服务,后期的所有功能都是建立在server的基础上,路由啊,session啊,static啊 之类的server.use(xxxx)
,这部分主要说如果引入相应模块,其它的咱就先不多说。
如果我们引入的模块不是nodejs内置的或者不是第三方的,就是自己封装的模块呢?有哪些需要了解的呢?
带路径的:
一般我们自己封装的模块 require('../xxx/yyy')
,js文件后缀名可以省略不写。 路径还可以写到文件夹的那层,但文件夹下一定要有一个index.js
系统会默认找index.js
require('../xxx/文件夹名称') === > require('../xxx/文件夹名称/index.js')
不带路径的:
require('koa')
其实就是找 node_modules
文件夹 系统node_modules
每一个Nodejs的执行文件都会自动地创建一个module
对象,同时module.exports
会创建一个叫exports
的属性,初始值为空对象{}
。exports
和module.exports
指向同一个内存,但require()
返回的是module.exports
而不是exports
,比如你只是给导出一些属性,即对其指向的内存进行修改的时候,使用exports
和module.exports
都可以得到相同的结果。
//a.js
function str(){
console.log('str方法')
}
let arr = [1,2,3];
let targetObj = {
a:'obj对象'
}
//module.exports的形式
module.exports = {
str,
arr,
targetObj
}
//exports的形式
exports.str = str;
exports.arr = arr;
exports.targetObj = targetObj;
//错误形式 因为exports和module.exports指向同一个内存 exports重新赋值为新对象 两者之前就不存在关系
//并且 require()返回的是module.exports而不是exports 所以这样写的话打印出的值都是undefined的
exports = {
str,
arr,
targetObj
}
//server.js
let {str,arr,targetObj} = require('./a');
console.log(str,arr,targetObj);//[Function: str] [ 1, 2, 3 ] { a: 'obj对象' }
以上是nodejs项目,最基本的书写语法,导入,导出,运行,其实nodejs与js的写法差不太多,只是对nodejs的模块大家了解的不多,对于入门来说其实也挺简单的。