Node笔记(新手入门必看)
. 初识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
- ECMAscript
- 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文件
- 创建编写js文件
- 打开终端(命令行),定位到脚本文件所属目录
- 输入
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笔记(新手入门必看)的更多相关文章
- Liunx新手入门必看
安装CentOS(Linux的一个常用发行版本,互联网公司经常使用这个发行版)用到的软件: VMware_workstation_full_12.5.2.exe 虚拟机软件,虚拟机由这个软件安装.管理 ...
- vue入门笔记(新手入门必看)
一.什么是Vue? 1. vue为我们提供了构建用户界面的渐进式框架,让我们不再去操作dom元素,直接对数据进行操作,让程序员不再浪费时间和精力在操作dom元素上,解放了双手,程序员只需要关心业 ...
- 1.16 Linux该如何学习(新手入门必看)
本节旨在介绍对于初学者如何学习 Linux 的建议.如果你已经确定对 Linux 产生了兴趣,那么接下来我们介绍一下学习 Linux 的方法. 如何去学习 学习大多类似庖丁解牛,对事物的认识一般都是由 ...
- 新手入门必看:VectorDraw 常见问题整理大全(一)
VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库.有了VDF提供的功能,您可以轻松地创建.编辑.管理.输出.输入和打印2D和3D图形文件.该库 ...
- 新手入门必看:VectorDraw 常见问题整理大全(二)
VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库.有了VDF提供的功能,您可以轻松地创建.编辑.管理.输出.输入和打印2D和3D图形文件.该库 ...
- Django新手入门必看
pip install django==2.1.7 (现在Django3.0出来,推荐大家可以使用一下Django3.0) pip list查看
- Java编程学习知识点分享 入门必看
Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...
- 全栈前端入门必看 koa2+mysql+vue+vant 构建简单版移动端博客
koa2+mysql+vue+vant 构建简单版移动端博客 具体内容展示 开始正文 github地址 <br/> 觉得对你有帮助的话,可以star一下^_^必须安装:<br/> ...
- JVM入门必看——JVM结构
转载自:http://blog.csdn.net/yfqnihao 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让 ...
随机推荐
- Delphi内存专题
第一课: Windows 是多任务的操作系统, 一个任务就是一个应用(应用程序).一个应用占一个进程; 在一个进程里面, 又可以运行多个线程(所以就有了很多"多线程编程"的话题). ...
- [web 前端] Npm package.json与package-lock.json文件的作用
本文链接:https://blog.csdn.net/u013992330/article/details/81110018 最新版nodejs中,多了一个package-lock.json文件,刚开 ...
- python-使用阿里云镜像加速
1. 在当前用户根目录下建立.pip文件夹 mkdir ~/.pip2.在.pip文件夹下创建文件pip.conf,并追加内容 [global]trusted-host=mirrors.aliyun. ...
- linux 的 两种磁盘扩容
当LVM分区空间不足的时候,可以进行扩容.主要的扩容方法有两种: 通过空余的磁盘进行扩容,这个方法比较简单,不会对原有数据有影响.将其他LVM分区空间取出一部分给需要扩容的LVM分区.下面就分别具体介 ...
- linux命令(11)环境变量:查看和添加环境变量
linux 环境变量系统: 系统级别:/etc/profile./etc/bashrc/ ./etc/environment 用户级别:~/.profile.~/.bashrc. ~/.bash_pr ...
- 轻量级Web服务器http-server
http-server是一个简单的零配置命令行http服务器.可用于h5页面手机端测试 Vue .Angualr.React项目打包后真机测试 github地址:https://github.com/ ...
- Spring整合Redis,并配置Jedis连接池
目录 只言片语 创建redis连接池的配置文件 单机版 spring整合redis(使用JedisPool) 项目中使用示例 集群版 spring整合redis(使用JedisCluster) 项目中 ...
- SAP views
文章转自 http://blog.csdn.net/HikenWong/article/details/8263969 1. sap的视图的类型sap的视图的类型有五种: Database views ...
- Android 调试桥介绍 (adb)
Android 调试桥 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信.它可为各种设备操作提供便利,如安装和调试 ...
- consul集群搭建以及ACL配置
由于时间匆忙,要是有什么地方没有写对的,请大佬指正,谢谢.文章有点水,大佬勿喷这篇博客不回去深度的讲解consul中的一些知识,主要分享的我在使用的时候的一些操作和遇见的问题以及解决办法.当然有些东西 ...