. 初识Node.js

1.1 Node.js是什么

  • Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

    • Node.js不是一门语言
    • Node.js不是库(library)、不是框架(frame)
    • ==Node.js是一个JavaScript运行环境==
    • <u>简单点来讲就是Node.js可以解析和执行JavaScript代码</u>
    • ==以前只有浏览器可以解析和执行JavaScript代码==
    • 也就是说现在的JavaScript可以完全脱落浏览器来运行,一切都归功于:Node.js
    • 构建于chrome的v8引擎之上
      • 代码只是具有特定格式的字符串
      • 引擎可以帮你去解析和执行
      • chrome的V8引擎是目前工人的解析执行js代码最快的
      • node.js作者把Google Chrome中的V8引擎移植了出来,开发了一个独立的js运行环境
  • 浏览器中的JavaScript
    • ECMAscript

      • js基本语法
    • BOM
    • DOM
  • Node.js中的JavaScript
    • 没有BOM、DOM
    • 有ECMAScript
    • 在Node这个JavaScript执行环境中为JavaScript提供了一些服务器级别的操作API
      • 例如文件的读写
      • 网络服务的构建
      • 网络通信
      • http服务器
      • 等处理(相当于开发web服务器,学习对应的api即可)
  • Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.

    • event-driven 事件驱动
    • non-blocking I/O model 非阻塞IO模型(异步)
    • lightweight and efficient. 轻量和高效
    • 随着课程慢慢学习会明白事件驱动、非阻塞IO模型
    • ==NodeJS以事件驱动著名,通过异步的编程达到高吞吐量高性能。==
  • Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.
    • npm是世界上最大的开源库生态系统
    • 绝大多数JavaScript相关的包都存放在了npm上,这样做的目的是为了让开发人员更方便的去下载使用
    • npm是基于node.js开发的包管理工具

1.2 ==node的API参考文档的使用:==

  • 黑点后面代表参数,例:

    • request <http.IncomingMessage>

    如果是方法它会告诉你方法的参数是什么,是否可选的。

    上述request代表绑定函数的参数,因为它是一个事件因此肯定需要绑定一个函数,后面的连接为这个参数的类型,功能上能够调用什么变量和方法。

  • 加()的代表方法,不加()的代表属性

1.3 Node.js能做什么

  • web服务器后台
  • 命令行工具
    • npm
    • git(C语言)
    • hexo(node)
    • 。。。
  • 对于前端开发工程师来讲,接触node最多的是使用它的命令行工具
    • 自己写的很少,主要是使用别人第三方发布的
    • webpack
    • gulp
    • npm

1.4 达到目标

  • B/S编程模型

    • browser-Server
    • back-end
    • 任何服务端技术这种BS编程模型都是一样,和语言无关
    • Node只是一个工具
  • 模块化编程
    • RequireJS
    • SeaJS
    • css中可以使用@import('文件路径')来实现引入外部文件
    • 以前认知的js智能通过script标签来加载
    • 在Node中可以像@import一样来引用加载JavaScript脚本文件
  • Node常用API
  • 异步编程
    • 回调函数
    • Promise
    • async
    • generator
  • Express web开发框架
  • ECMAScript 6
    • 在课程中穿插讲解
    • 它只是一个新的语法
  • 。。。
  • 学习node不仅会帮助打开服务端黑盒子,同时有助于学习高级内容
    • Vue.js
    • React
    • angular
  • node只有js文件,代码一般为 .js文件
  1. 创建编写js文件
  2. 打开终端(命令行),定位到脚本文件所属目录
  3. 输入node 文件名执行对应的文件,显示结果

==注意:文件名不能使用node,最好也不要使用中文==

  • 解析执行JavaScript

  • 读写文件

    • 使用fs模块

      var fs = require('fs');
    • 读取文件

      fs.readFile('路径', '可选编码', function (error, data) {});//具体查看代码
    • ==readFile方法的第二个参数为可选参数,规定解析文件的编码,可选择utf-8编码,让他以网页原文件的形式读取,不是二进制数据==

    • 写文件

      fs.writeFile();

==Node.js中常常使用回调函数作为参数,因为是异步的==

  • HTTP

    • 详见代码。
    • ==服务器和web页面一般使用字符串进行通信==,因此json的传递需要转化为字符串
    • Ctrl+c可以关闭服务器(bash和cmd一样)
    • 在浏览器查看http请求中,有一个/favicon.ico路径,该请求是浏览器的默认行为,目的是请求网页的网站头像
    • ==响应内容只能是字符串或二进制数据(Buffer)。对象、数字、数组、布尔值都不行==,因此response.end()方法能够响应字符串和二进制数据

什么是模块化

  • 现实中的模块化

    • 生产效率高
    • 维护方便,成本低
  • 程序中的模块化

    • 开发效率高 一次编写多次使用
    • 方便维护了(维护的成本更低)模块之间有高耦合低内聚的特点
  • 为什么要在 程序 中使用 模块化的开发方式

    • 命名冲突
    • 文件依赖

Node笔记(新手入门必看)的更多相关文章

  1. Liunx新手入门必看

    安装CentOS(Linux的一个常用发行版本,互联网公司经常使用这个发行版)用到的软件: VMware_workstation_full_12.5.2.exe 虚拟机软件,虚拟机由这个软件安装.管理 ...

  2. vue入门笔记(新手入门必看)

    一.什么是Vue? 1.    vue为我们提供了构建用户界面的渐进式框架,让我们不再去操作dom元素,直接对数据进行操作,让程序员不再浪费时间和精力在操作dom元素上,解放了双手,程序员只需要关心业 ...

  3. 1.16 Linux该如何学习(新手入门必看)

    本节旨在介绍对于初学者如何学习 Linux 的建议.如果你已经确定对 Linux 产生了兴趣,那么接下来我们介绍一下学习 Linux 的方法. 如何去学习 学习大多类似庖丁解牛,对事物的认识一般都是由 ...

  4. 新手入门必看:VectorDraw 常见问题整理大全(一)

    VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库.有了VDF提供的功能,您可以轻松地创建.编辑.管理.输出.输入和打印2D和3D图形文件.该库 ...

  5. 新手入门必看:VectorDraw 常见问题整理大全(二)

    VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库.有了VDF提供的功能,您可以轻松地创建.编辑.管理.输出.输入和打印2D和3D图形文件.该库 ...

  6. Django新手入门必看

    pip install django==2.1.7 (现在Django3.0出来,推荐大家可以使用一下Django3.0) pip list查看

  7. Java编程学习知识点分享 入门必看

    Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...

  8. 全栈前端入门必看 koa2+mysql+vue+vant 构建简单版移动端博客

    koa2+mysql+vue+vant 构建简单版移动端博客 具体内容展示 开始正文 github地址 <br/> 觉得对你有帮助的话,可以star一下^_^必须安装:<br/> ...

  9. JVM入门必看——JVM结构

    转载自:http://blog.csdn.net/yfqnihao 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让 ...

随机推荐

  1. CS224n学习笔记(三)

    语言模型 对于一个文本中出现的单词 \(w_i\) 的概率,他更多的依靠的是前 \(n\) 个单词,而不是这句话中前面所有的单词. \[ P\left(w_{1}, \ldots, w_{m}\rig ...

  2. Python 实现毫秒级淘宝、京东、天猫等秒杀抢购脚本

    本篇文章主要介绍了Python 通过selenium实现毫秒级自动抢购的示例代码,通过扫码登录即可自动完成一系列操作,抢购时间精确至毫秒,可抢加购物车等待时间结算的,也可以抢聚划算的商品. 该思路可运 ...

  3. sqlite数据库使用具体案例以及mysqlite.db数据库

    本文操作是测试数据库的其中一张表,其中包括清空sqlite数据库MyGroup表中的数据,清空sqlite数据库sqlite_sequence表中的自增变量,sqlite数据库MyGroup直接插入数 ...

  4. PG11开启WAL归档

    -创建归档目录 mkdir -p $PGDATA/archive_wals chown -R postgres.postgres $PGDATA/archive_wals -修改参数(在配置文件中配置 ...

  5. idea搭建简单ssm框架的最详细教程(新)

    为开发一个测试程序,特搭建一个简单的ssm框架,因为网上看到很多都是比较老旧的教程,很多包都不能用了,eclipes搭建并且其中还附带了很多的其他东西,所以特此记录一下mac中idea搭建过程. 另: ...

  6. matlab学习笔记8 基本绘图命令-初级二维绘图/交互式绘图

    一起来学matlab-matlab学习笔记8 基本绘图命令_5 初级二维绘图/交互式绘图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用&g ...

  7. java判断手机还是电脑访问

    很多博客写的很复杂,没具体看.我只用下面的几行代码 String userAgent = req.getHeader("user-agent"); ) { //安卓 } ) || ...

  8. springboot-把web项目打成war包部署到外部tomcat

    将打包方式修改为war <packaging>war</packaging> 移除tomcat依赖或者将tomcat依赖scope改为provide 移除tomcat依赖 &l ...

  9. k8s 修改节点角色和删除节点

    修改节点角色: kubectl label nodes cn-thin05 node-role.kubernetes.io/node= 卸载节点: kubectl drain jupiter --de ...

  10. Oracle spatial空间查询的选择度分析

    在上一篇中,我用一个案例演示了对于数值或字符串类型的字段,选择度的计算方法.并证明了当字段值的选择度不同时,将会影响CBO选择最终的执行计划.对于可排序的字段类型,选择度计算模型已经有很多人写博客介绍 ...