vue diff算法与虚拟dom知识整理(2) snabbdom简介并搭建开发环境

snabbdom算是diff算法 和 虚拟dom 的一个鼻租了

vue源码借鉴了snabbdom

这个单词翻译出来叫速度
在这里插入图片描述
命名还是用了点心的 后面是 dom 这个 我们大概去猜作者的意思 大概想表示的就是 一个比较快的dom操作

snabbdom的get地址如下
https://github.com/snabbdom/snabbdom
这里的简介也简单讲述了整体的一个概念
在这里插入图片描述
大概就是 一个简单、模块化、强大和高性能的虚拟DOM库

重点来了 这个虚拟dom库的核心源码 仅有200行代码 且代码真的是把简化和优化做到了很高的程度
在这里插入图片描述
这两百行代码的思想和其中的算法 是面试官经常喜欢去问的 所以 掌握的程度还是非常重要的

snabbdom实际是TS写的 而get上是不提供编译好的JavaScript版本的
我们这里 点src目录进去
在这里插入图片描述
看到很多文件都还是 ts结尾的
在这里插入图片描述

但这样就还是有点麻烦 其实我们可以直接通过

npm i -D snabbdom

下载到 JavaScript版本的snabbdom

这里 就不建议大家去克隆get上的snabbdom了 因为 你get克隆下来 还是一个TypeScript版本的 还是要编译成js版本的

好 那么 我们现在来搭建环境
我们现在电脑里创建一个文件夹 然后打开
在这里插入图片描述
然后在终端打开这个目录 输入

npm init

这样我们就创建一个基本的 package.json 依赖
在这里插入图片描述
然后我们在终端输入

npm i -S snabbdom

然后 我们的snabbdom就进来了
在这里插入图片描述
安装好之后 打开新出来的 node_modules
打开下面的src
你会发现 它Ts的源码其实也进来了
在这里插入图片描述
但其实还有 build 里面就还有js的源码
在这里插入图片描述
而 这里大家会注意到 这里都有一个 .d.ts 这个就是 ts转js留下的一个保存类型的文件

snabbdom是一个dom库 简单说 就是 他是有界面的
你可以在上面写任何html标签 但他不能在node环境下运行

那我们就需要一个 webpack和webpack-dev-server的开发环境
webpack是构建工具 webpack-dev-server则是让程序在端口上跑起来

但大家一定要注意 webpack要装5啊 你要是装4那就没有读取exports的一个能力的

我们在终端执行这样一段代码

npm i -D webpack@5 webpack-cli@3 webpack-dev-server@3

这样我们的依赖就进来了在这里插入图片描述
然后 我们在项目根目录创建 webpack.config.js
参考代码如下

//通过node获取到当前文件的位置
const path = require('path')

module.exports = {
    
    
    //设置当前入口文件
    entry: './src/index.js',
    //出口配置
    output: {
    
    
      //设置打包后文件的名字
      filename: 'bundle.js',
      //设置虚拟打包  文件并不会真正打包到项目中 而是出现在指定端口上
      publicPath: 'xuni'
    },
    devServer: {
    
    
        port: 8080,
        contentBase: 'www'
    }
}

这里 我们指定了入口为 src下的index.js文件 那么 目前还没有 我们创建一下

在根目录下创建目录 叫 src
在src下面创建一个文件 叫 index.js
内容先不用管 先创建出来

然后 我们这里指定了contentBase为一个 3w目录

我们在根目录下创建一个文件夹 叫 www
在项目创建一个文件叫 index.html
参考代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>你好!!!</h1>
</body>
</html>

就是一个比较基本的html结构代码

然后 我们打开项目根目录下的 package.json
在scripts下添加一个命令

"serve": "webpack-dev-server"

在这里插入图片描述
好 然后我们来尝试第一次打包 在终端执行

npm run serve

在这里插入图片描述
好 这样 我们的项目就跑起来了

然后 我们尝试访问自己指定的 8080端口
http://localhost:8080/
在这里插入图片描述
我们html代码的效果就出来了

那么 因为我们的webpack配置的是虚拟打包的 所以 我们在项目中并看不到包

那么 打包后端文件 我们可以通过 http://localhost:8080/xuni/bundle.js 访问到
在这里插入图片描述
因为 我们webpack.config.js的配置
在这里插入图片描述
指定端口的 就不说了 然后 指定打包的文件的文件夹名为xuni 里面的文件叫bundle.js 这都是我们自己配置的

然后 我们在www下的index.html中引入这个打包后的文件

<script src="/xuni/bundle.js"></script>

在这里插入图片描述
然后 我们来测试一下 在 src下的 index.js 中写一段代码

alert(123);

然后 我们再次访问端口
在这里插入图片描述
弹出这个提示 说明成功了
他成功打包了入口文件 index.js的脚本并执行出来了

这样 环境就基本ok了 好消息是不需要安装任何loader
特别是ts 因为我们要搞的纯js脚本 并不需要ts
对我们也会方便非常多

然后我们在
https://github.com/snabbdom/snabbdom
中 找到这个位置
在这里插入图片描述
将这篇代码考到src入口文件index.js中

然后 看到 www目录下的index.html中 加入一个 id为container的元素
因为 这段js代码中已经写的比较明白了 要找一个 id为 container的盒子

在这里插入图片描述
在这里插入图片描述
然后访问项目端口
在这里插入图片描述
界面能出现这个 就说明成功了

猜你喜欢

转载自blog.csdn.net/weixin_45966674/article/details/130466431