[WEB/nodejs]Nodejs知识入门和子进程

文章目录

    • 入门内容
      • Nodejs初步
      • 解构赋值
      • 事件绑定
        • 1.DOM绑定
        • 2.在JS绑定
        • 3. 绑定事件监听函数
      • Callback回调函数
      • 子进程模块_函数child_process()
      • 参考链接

入门内容

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元素,这里是
标签 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()底层基础

参考链接

Nodejs-child_process文档

你可能感兴趣的