Nodejs学习(一)--- 基础篇

引言
nodejs搭建
起步
nodejs语法

引言

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

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

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


server开发和前端开发的区别

  • 服务稳定性
    • server端可能遭到各种恶意攻击和误操作
    • 单个客户端可以挂掉,但服务端不行
    • PM2做进程守候
  • 考虑内存和CPU(优化,扩展)
    • 客户端独占一个浏览器,内存和CPU都不是问题
    • server端承载很多请求,内存和CPU都是稀缺资源
    • stream写日志是比较节省内存的(优化),redis存session(扩展)
  • 日志记录
    • server端要记录日志,存储日志,分析日志,前端不用关心
  • 安全
    • server端要随时准备接受各种恶意攻击:越权操作,数据库攻击
    • 预防xss攻击和sql注入
  • 集群和服务拆分
    • 产品发展速度快,承载流量大

nodejs和JavaScript的区别

  • javascript
    • 使用ESMAScript语法规范,外加web API
    • web API : BOM DOM,实践绑定,ajax等
  • nodejs
    • 使用ESMAScript语法规范,外加nodejs API
    • nodejs API:处理http请求,处理文件等

nodejs是什么?

其实就是js的后台版本 ,普通的js用的是前台,而nodejs是在服务器端运行的
简单的说 Node.js 就是运行在服务端的 JavaScript。

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

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


nodejs用途

一般nodejs不会独立开发

  1. 中间层
    处于这几方面考虑(安全性,性能,降低主服务器复杂度)
    在这里插入图片描述
  2. 小型服务
  3. 工具(gulp,webpack)

nodejs的优势

  1. 便于前端入手
  2. 性能高
  3. 利于和前端代码整合

基础篇

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的语法来实现具体的功能。


nodejs语法

对于前端小伙伴来说你要是已经掌握了ES5/ES6,那么nodejs的大多数的语法你都可以看懂的,nodejs本省就是支持ES6的,所以你可以放心大胆的去写,并且不用考虑到浏览器的兼容问题,node是运行在服务端滴~,浏览器兼容 不好意思管不到它。

1.运行语法 node xxx.js

其实很简单,在当前项目目录下 打开命令行 键入 node server.js 就可以运行server.js了,前提在该目录下你有一个server.js文件
在这里插入图片描述

2.引入模块语法 require(‘xxxx’)

单纯的执行一个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

3.导出模块语法 module.exports /exports

每一个Nodejs的执行文件都会自动地创建一个module对象,同时module.exports会创建一个叫exports的属性,初始值为空对象{}exportsmodule.exports指向同一个内存,但require()返回的是module.exports而不是exports,比如你只是给导出一些属性,即对其指向的内存进行修改的时候,使用exportsmodule.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的模块大家了解的不多,对于入门来说其实也挺简单的。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值