IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 关于了不起的node.js将js进行到底的相关学习笔记 -> 正文阅读

[JavaScript知识库]关于了不起的node.js将js进行到底的相关学习笔记

node.js能够实现非服务端来搭建服务,说通俗一点它就是一个工具,工具就是用来使用的

node能够直接运行js文件 命令为node xxx.js

当要下载某个模块的时候可以直接使用npm install xxxx

一旦下载了模块后就会产生一个package.json

这是一个专门用于记载相关依赖的文件,如果删除掉node_moulds,可以直接使用npm install

当然也可以把自己构建的包发布上去npm供他人使用可以使用npm publish

通常安装相关的二进制包的时候都是直接安装到全局中的可以使用npm install -g express

游览npm仓库有两种方法,一种是命令行,一种是直接到官网上面寻找

npm search xxx相关的模块

找到相关模块后想打开游览相关知识的话可以使用

npm view xxxx

在游览器中this的值为全局对象,就是window对象

function a (){
	window==this
}
a()

调用.call和apply可以改变this相关值

function a(){
 this.a=='b'
}
a.call({a:'b'})

call 和apply的区别在于,call接受参数列表,而apply接受一个参数数组

a.call({a:'b'},'x','b')
a.call({a:'b'},{'frist','second'})

方法能够改变自身的属性值,上面函数就是调用call修改了a参数的值

函数还能够查看其参数的数量

函数里面还有一种是自执行函数,自执行函数是一种机制,通过这种机制声明和调用一个匿名函数达到定义一个新的作用域

其特点可以立即执行,私有变量不被其他代码访问

函数也可以操作自己的属性通过 function.prototype.xxxx=xxxx

在prototype的函数内部,this并非像函数那样指向global对象而是指向该类创建的实例对象

在js的函数里面是可以重套属性和方法的,所以它类似于类,而且方法完成可以用来创建类

function Animal(name){
	this.name=name
}
Animal.prototype.getName=function(){
	return this.name;
};
let animal=new Animal('tobi');
console.log(animal.getName()=='tobi')

在js中可以直接写class,也可以直接写成继承的形式但也有另一种写法继承的方式

function ferret(){}; ferret.prototype=new animal()

这样就可以进行继承

bind和call,carry等类似,但是这个只能传入一个类

可以使用_proto_使得定义继承链变得更加容易

function animal() {}
function ferret(){}
ferret.prototype._proto_=animal.prototype

存取器

可以通过存取器来进行动态定义属性_defineGetter_用于访问属性,设置属性可以使用_defineSetter_

(js方法的观察思考与总结,当在function定义相关属性时就会产生存取属性的方法),里面都有prototype

函数内部的定义无法被外部访问到

如果直接通过.的形式来进行设置某个函数的相关的值就是相当于类的静态属性,类的静态属性无法用实例来访问

综上所述完全可以将js中的函数当做是java里面的类,也可以作为普通的方法来进行使用,也就是说prototype是专门用于类的实例来着,在没有创建对象时就可以进行使用,创建出实例,实例相关的方法就可以进行覆盖

_proto_会指向父对象,这个可以理解为对象的原型部分,由于里面有contructor,如果表示继承的话可以从这方面直接入手,在js里面中函数也是对象,而protoype是可以让函数实例化的对象可以找到公用的属性和方法


global对象

在游览器中,全局对象指的是window对象,在window对象上定义的任何内容都可以被全局访问到

在node中有两个类似但却各自代表不同含义的对象

global:和window一样任何global对象上的属性都可以被全局访问到

process:所有全局上下文中的内容都在process对象中,在游览器中只有一个window对象,在node中也只有一个process对象,举例来说,在游览器中窗口的名字为window.name,类似的,在node中进程的名字为process.title

游览器中很多函数和工具虽然并非语言标准的一部分,但非常实用

另外有些api,人们还在讨论是否加入到语言标准中,不过node.js为了让node应用效率高就把它们加进来例如setTimeout


模块系统

当你引入第三方模块时,最好它们暴露一个全局变量

这样有可能导致多个模块对全局命名空间的污染及命名冲突问题

node内置了很多实用模块作为基础的工具集来帮助构建现代应用包括http,net,fs等等

抛弃采取一堆全局变量的方式,转而引入一个简单但却强大无比的模块系统,该模块系统有三个核心的全局对象require,module,exports

绝对和相对模块

这里的绝对模块是指node通过node_modules查找到的模块,或者node内置的如fs这样的模块

说白点就是通过下载模块或者是系统内置的模块就是所谓的绝对模块,绝对模块不需要提供所谓的路径,一旦识别到关键字就会自动进行加载,而相对模块将指向一个相对工作目录中的javascript文件,说得再明白点就是非官方的,私自定义的就是所谓的相对模块

暴露api

其实就是es6中的模块化,exports,这个是导出,导入为require

具体的写法如下

exports.name='xxxxx'
exports.data='this is some data'

用最简单的语言概述就是在js文件里面如果要暴露什么东西就直接用exports.xx的形式进行暴露

exports就是所谓的module.exports

事件

node.js中的基础api之一就是eventEmitter,无论是在node还是在游览器中大量代码都依赖于所监听或者分发的事件

window.addEventListener('load',function(){
 alert('窗口已经加载')
})

游览器负责处理事件相关的dom api主要包括addEventListener,removeEventListener以及dispatchEvent,它们还用到一系列从window到xmlHTTPRequest等的其他对象上,为此node暴露了EVENT emitterapi该api上定义了on,emit以及removelistener方法,它以process.eventemitter形式暴露出来

let eventEmitter =process.EventEmitter
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:15:16  更:2021-11-23 12:17:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 2:45:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码