入门内容
Nodejs初步
Nodejs是在服务器端运行的JS代码,跨平台JS的运行环境,
采用V8引擎运行源代码,
利用事件驱动、非阻塞、异步I/O模型等来提高运行的性能。
使用多进程是扩展一个 Node 应用最好的方式,
被设计用来通过很多节点创建分布式应用,
这也是为什么被命名为 Node。
解构赋值
类似于解包,将对象或者数组当中的值提取,按变量名进行赋值。
const { a } = b
// 其等效于↘
// a所赋的值为b当中的a
const a = b.a
数组举例
const {a} = {a:1, b:2};
console.log(a); //1
const {b} = {a:1, b:2};
console.log(b); //2
const {a,b} = {a:1, b:2};
console.log(a,b); //1,2
const {a} = { c:1 };
console.log(a); //undefined
由最后一个示例可见,解构本质上是将对象(如果是数组则转化为对象),然后将对象当中的值赋予前面的变量。
事件绑定
1.DOM绑定
在HTML标签当中绑定JS事件
语法
onXXX="JavaScript代码"
onXXX(事件名称)的选择
- onclick:鼠标单击事件
- ondouble: 鼠标双击事件
- onmouseover:鼠标移入事件
- onmouseout:鼠标移出事件
JavaScript代码部分指的是,处理事件所执行的JS代码,可以为函数。
示例
// 自定义函数
<input onclick="WarningAlert()" type="button" value="点警告按钮" />
2.在JS绑定
语法
elementObject.onXXX=function(){
// 事件处理代码
}
示例
<script type="text/javascript">
document.getElementById("demo").onclick=function(){
// this 指当前发生事件的HTML元素,这里是<div>标签
alert(this.getAttribute("type"));
}
</script>
3. 绑定事件监听函数
addEventListener()
elementObject.addEventListener(eventName,handle,useCapture);
参数 | 说明 |
---|---|
elementObject | DOM对象(即DOM元素)。 |
eventName | 事件名称。注意,这里的事件名称没有“ on ”,如鼠标单击事件 click ,鼠标双击事件 doubleclick ,鼠标移入事件 mouseover,鼠标移出事件 mouseout 等。 |
handle | 事件句柄函数,即用来处理事件的函数。 |
useCapture | Boolean类型,是否使用捕获,一般用false 。这里涉及到JavaScript事件流的概念,后续章节将会详细讲解。 |
attachEvent()
elementObject.attachEvent(eventName,handle);
参数 | 说明 |
---|---|
elementObject | DOM对象(即DOM元素)。 |
eventName | 事件名称。注意,与addEventListener()不同,这里的事件名称有“ on ”,如鼠标单击事件 onclick ,鼠标双击事件 ondoubleclick ,鼠标移入事件 onmouseover,鼠标移出事件 onmouseout 等。 |
handle | 事件句柄函数,即用来处理事件的函数。 |
举例
addEvent(document.getElementById("demo"),"click",myAlert);
Callback回调函数
向库函数以参数的形式传递一个函数,来供该库函数调用。
function a(){
console.log('hello!');
}
// callback是回调函数。
// 函数有call和apply方法。一般情况下,函数的this对象是根据上下文自动指定的,但是call和apply方法可以手动指定上下文,随意定义this对象指向谁。
function b(callback){
callback();
}
function c(callback){
callback.call();
}
// 向bc函数传参,参数为a的函数名
function test(){
b(a);
c(a);
}
// 测试
test();
// 输出为:
// hello!
// hello!
子进程模块_函数child_process()
子进程模块/child_process模块
在Nodejs当中,单独的进程难以完成复杂的多个任务,
可以借助此模块来创建一些子进程,执行任务,
可借其调用Shell完成一些命令的调用,
const exec = require('child_process');
exec.exec('calc');
其半数函数创建的进程为异步进程,不会阻塞主进程,
其以Sync
结尾的函数代表同步进程。
.exec() // 调用/bin/sh,执行脚本,有回调
.execFile() // 调用/bin/sh,执行可执行文件,有回调,与exec参数位置不同
.fork() // 采用node执行命令
.spawn() // 创建子进程并执行的基础,只能通过流事件,获取结果,无200kb大小限制
// .spawn()是.exec()、.execFile()、.fork()底层基础