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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 其实 node.js 是比较简单的,API 也很简单,但是思路要转过来

1.Node.js介绍

Nodejs的用途:

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

学习Nodejs的困惑:

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

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

2345_image_file_copy_443.jpg

知识点介绍

2345_image_file_copy_444.jpg

案例架构图

2.Node.js介绍

2.1下载和安装

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

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

2345_image_file_copy_445.jpg

使用NVM

2345_image_file_copy_446.jpg

使用nvm

2345_image_file_copy_447.jpg

安装

2.2 node.js和js的区别

                     Nodejs和JavaScript的区别

ECMAScript;

javascript;

nodejs

2345_image_file_copy_448.jpg

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 引入模块。

function add(a,b){
  return a+b
}
function mul(a,b) {
  return a*b
}
module.export = {
  add,mul
}
const {add,mul} = require('./a') 
const sum = add(10,20)
const result = mul(100,200)
console.log(sum)
console.log(result)

上面讲的是如何引用自己写的文件,那么如果是 npm 包呢? 如何引用,这个我们先 npm init 初始化一下,安装一个 lodash 工具库,这个库的引用是直接 require 一个依赖名字即可,常 用_代替。

 

const {add,mul} = require('./a') 
const_=require('ladash')
const sum = add(10,20)
const result = mul(100,200)
console.log(sum)
console.log(result)
const arr = _.concat([1,2],3)
console.log('aee...',arr)

那么为什么要这些模块化标准?好处是可以把代码进行拆分,方便引用;

2345_image_file_copy_449.jpg

4 debugger

   node.js 至今有多种 debug 的方式,比较推荐的是利用 vscode 。 我们新建一个 debugger-test 的文件夹,初始化 npm ,根据 npm 中 main 指向的我们建个 index.js ( main 与主文件必须名 字一致,因为是根据 main 找到这个 index.js 主文件)。 在 index.js 随便写点东西,点击右边的小虫子,再打个断点 就可以进入 debugger 模式了,跟 chrome 是非常相似的。 我们写一个比较复杂的例子再尝试一下调试模式。

const http = require('http')
const server = http.createServer((req,res) => {
   res.writehead(200,{'content-type':'text/html'})
   res.end('<h1>hello world</h1>')
})
server.listen(3000,()=>{
    console.log('listening on 300 port')
})

我们发现其实这个是发送了两次请求(一次是 localhost 展示 hello world 另一次是请求 favicon.ico 即标签左边那个小图标)。这就是为什么请求完一次还会将断点跳到 writeHead 高亮显示,第一次请求也是从这里开始.

5 server端和前端的区别

2345_image_file_copy_450.jpg

语言和端是不一样的,不仅仅是区别于语言,各种开发工具 什么的都是不一样。前端的话就是从多个服务器下载内容来 执行,而 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开发和前端开发的区别,重占在切换思路
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
45 0
|
20天前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
31 4
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
1月前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
31 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
1月前
|
JavaScript 前端开发 开发者
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第27天】在前端开发领域,Vue.js和Angular是两个备受瞩目的框架。本文对比了两者的优劣,Vue.js以轻量级和易上手著称,适合快速开发小型到中型项目;Angular则由Google支持,功能全面,适合大型企业级应用。选择时需考虑项目需求、团队熟悉度和长期维护等因素。
41 1
|
1月前
|
JavaScript 前端开发 API
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第26天】前端技术的飞速发展让开发者在构建用户界面时有了更多选择。本文对比了Vue.js和Angular两大框架,介绍了它们的特点和优劣,并给出了在实际项目中如何选择的建议。Vue.js轻量级、易上手,适合小型项目;Angular结构化、功能强大,适合大型项目。
30 1
|
1月前
|
前端开发 JavaScript UED
"前端小技巧大揭秘:JS如何将后台时间戳秒变亲切小时前、分钟前,让用户秒懂,提升互动体验!"
【10月更文挑战第23天】在Web开发中,将后台返回的时间戳转换为“小时前”、“分钟前”、“刚刚”等友好的时间描述是常见需求。本文介绍如何用JavaScript实现这一功能,通过计算当前时间和时间戳的差值,返回相应的描述,提升用户体验。
31 1
|
2月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
170 0
|
2月前
|
前端开发 JavaScript 程序员
【从前端入门到全栈】Node.js 之核心概念
【从前端入门到全栈】Node.js 之核心概念
|
2月前
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题