• 【前端升全栈】 五分钟了解Node.js


    📑博客主页:@丘比特惩罚陆

    💖欢迎关注:点赞收藏⭐留言✒
    💬系列专栏:web前端、嵌入式、笔记专栏
    🎮 加入社区: 丘比特惩罚陆
    🥇人生格言:选对方向,每走一步都是进步!
    ✒️欢迎大佬指正,一起学习!一起加油!

    👏 希望大家能小手一动,帮忙点个赞!

    😁资源邮箱:2237814512@qq.com

    目录

    1.Node.js介绍

    2.Node.js介绍

    2.1下载和安装

     2.2 node.js和js的区别

    3 commonjs-演示 

    4 debugger 

    5 server端和前端的区别

    服务稳定性:

    考虑CPU和内存(优化、扩展)

    日志记录

    安全

    集群和服务拆分

    6 总结


    1.Node.js介绍

    Nodejs的用途:

    • Nodejs,是一个JavaScript的运行环境;
    • 运行在服务器,作为web server
    • 运行在本地,作为打包、构建工具

    学习Nodejs的困惑:

    • Nodejs运行在服务器,而不是在浏览器环境;
    • 服务器开发的思路和套路,与前端完全不一样;

     其实 node.js 是比较简单的,API 也很简单,但是思路要转过来;

    知识点介绍

     

    案例架构图

     

    2.Node.js介绍

    2.1下载和安装

    可以使用普通的下载方式,当然也可以使用NVM这个方法;

    普通的方法是访问网站;http://nodejs.cn/,下载并且安装;打开命令行,运行node-v和npm -v测试;

    使用NVM

     

    使用nvm

     

    安装

     2.2 node.js和js的区别

                          Nodejs和JavaScript的区别

    ECMAScript;

    javascript;

    nodejs

     

    ECMAScript 

     具体可以参考 es6.ruanyifeng.com,都是语法;

    ECMAscript

    不能操作DOM,不能监听click时间,不能发送ajax请求;

    不能处理http请求,不能操作文件;

    即,只有ECMAscript,几乎做不了任何实际的项目

    JavaScript

    使用ECMAscript语法规范,维嘉web API,缺一不可;

    DOM操作,BOM操作,时间绑定,Ajax等等;

    两者结合,即可完成浏览器端的任何操作 

    Nodejs 

    使用ECMAscript语法规范,外加NodejsAPI,缺一不可;

    处理http,处理文件等;

    两者结合,就可以完成服务端server的任何操作;

     关于这个可以查看 nodejs.cn/api/可以知道 nodejs API

    总结

    ECMAscrip是语法规范;

    nodejs=ECMAscrip+NodejsAPI;

    3 commonjs-演示 

    commonJS node.js 自带的规范,如 module.exports 输出模块,require 引入模块。
    1. function add(a,b){
    2. return a+b
    3. }
    4. function mul(a,b) {
    5. return a*b
    6. }
    7. module.export = {
    8. add,mul
    9. }
    1. const {add,mul} = require('./a')
    2. const sum = add(10,20)
    3. const result = mul(100,200)
    4. console.log(sum)
    5. console.log(result)
    上面讲的是如何引用自己写的文件,那么如果是 npm 包呢? 如何引用,这个我们先 npm init 初始化一下,安装一个 lodash 工具库,这个库的引用是直接 require 一个依赖名字即可,常 用_ 代替。

     

    1. const {add,mul} = require('./a')
    2. const_=require('ladash')
    3. const sum = add(10,20)
    4. const result = mul(100,200)
    5. console.log(sum)
    6. console.log(result)
    7. const arr = _.concat([1,2],3)
    8. console.log('aee...',arr)
    那么为什么要这些模块化标准?好处是可以把代码进行拆分,方便引用;

     

    4 debugger 

        node.js 至今有多种 debug 的方式,比较推荐的是利用 vscode 。 我们新建一个 debugger-test 的文件夹,初始化 npm ,根据 npm 中 main 指向的我们建个 index.js main 与主文件必须名 字一致,因为是根据 main 找到这个 index.js 主文件)。 在 index.js 随便写点东西,点击右边的小虫子,再打个断点 就可以进入 debugger 模式了,跟 chrome 是非常相似的。 我们写一个比较复杂的例子再尝试一下调试模式。
    1. const http = require('http')
    2. const server = http.createServer((req,res) => {
    3. res.writehead(200,{'content-type':'text/html'})
    4. res.end('

      hello world

      '
      )
    5. })
    6. server.listen(3000,()=>{
    7. console.log('listening on 300 port')
    8. })
    我们发现其实这个是发送了两次请求(一次是 localhost 展示 hello world 另一次是请求 favicon.ico 即标签左边那个小图标)。这就是为什么请求完一次还会将断点跳到 writeHead 高亮显示,第一次请求也是从这里开始.

    5 server端和前端的区别

     语言和端是不一样的,不仅仅是区别于语言,各种开发工具 什么的都是不一样。前端的话就是从多个服务器下载内容来 执行,而 server 却是承受多个客户端的请求,这里就是比较 大的差别!

    server开发和前端开发的区别:
    • 服务稳定性
    • 考虑内存和CPU(优化,发展)
    • 日志记录
    • 安全
    • 集群和服务拆分

     承接很多请求所以很可能有多种攻击;客户端可能只是某个人挂了其它没关系而服务端挂了大家都没得玩;可以通过PM2 进程守候就是挂了就自己重启。

    服务稳定性:

    • server端可能回遭受各种恶意公鸡和误操作;
    • 单个客户端可以意外挂掉,但是服务端不可以;
    通过 stream 优化, redis 拓展内存和 cpu

    考虑CPU和内存(优化、扩展)

    • 客户端独占一个浏览器,内存和CPU都不是问题
       
    • server端要承载很多请求,CPU 和内存都是稀缺资源
    • 课程后面会讲解使用stream写日志,使用redis存session

    日志记录

    • 前端也会参与写日志,但只是日志的发起方,不关心后续
    • server端要记录日志、存储日志、分析日志,前端不关心
    • 课程后面会讲解多种日志记录方式,以及如何分析日志

    安全

    • server端要随时准备接收各种恶意攻击,前端则少很多
    • 如∶越权操作,数据库攻击等
    • 课程后面会讲解登录验证,预防xss攻击和sql注入

    集群和服务拆分

    • 产品发展速度快,流量可能会迅速增加
    • 如何通过扩展机器和服务拆分来承载大流量?
    • 本课程虽然是单机器开发,但是从设计上支持服务拆分
       

    6 总结

    • nodejs下载安装,两种方式
    • nodejs和前端javascript的区别,commonjs和debugger
    • server开发和前端开发的区别,重占在切换思路
  • 相关阅读:
    Golang基础 基础数据类型 Slice切片
    安全防御:防火墙基本模块
    双十一期间如何抢占流量,打造品牌爆款产品
    SpringBoot使用kafka事务-消费者方
    安科瑞EMS能效管理平台降低铜电解单耗的应用-Susie 周
    《Animal Farm》笔记
    使用 Python 中的小波变换信号驾驭股票价格的波动
    设计模式——1. 单例模式
    成立不到一年!MIT衍生量子计算公司完成900万美元融资
    netty框架学习记录
  • 原文地址:https://blog.csdn.net/Lushengshi/article/details/127038054