npm cnpm yarn 和 npx的区别

NPMnpm 是一个node package installer commander tool。在安装了node.js环境下可以通过npm i xxx 来安装你需要的node package到本地或者全局。npm i webpack -G //全局安装,路径为 /usr/local/binnpm i webpack -S -D //本地安装, 安装路径为 ./node-modules/.bin/NPXnpx会在安装npm的时候一起安装到本地。npx有两个应用场景:在没有安装package的情况_npm npx和yarn
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

Node开发脚手架及自动化构建工作流

脚手架的工作原理:1.通过命令行交互询问用户问题。2.根据用户回答问题的结果生成文件。首先Node中 inquirer是命令行交互模块,我们需要通过npm/yarn下载inquirer,通过 inquirer模块中的prompt方法 发出对用户的命令行询问。然后inquirer的prompt方法会返回一个promise,然后在then方法中获取到用户输入的 结果,通过Node的fs,path模块,搭配ejs模板引擎,将templates文件夹中的文件 写入根目录。自动化构建工作流不管是基于gulp_node脚手架开发
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

前端工程化的意义

工程化不是某个具体的工具,工程化的核心是对项目整体的规划和架构解决的问题&带来的价值1.每次开启新项目,都需要做一些重复性的工作,比如下载一些插件,定义项目结构。而工程化可以对这些重复性操作做一个封装,以后每次只需要引用即可。避免了很多重复性操作2.不同的开发人员的代码风格大相径庭,导致从仓库拉下的代码有时候无法直接使用,而工程化可以很好的规范代码要求3.想要使用Less/Sass去提高CSS的编程性,但是运行环境确不支持。工程化可以帮助我们实现CSS代码编译,在运行的时候将Sass/_前端工程化的意义
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

工作中 git 常见问题的解决

删除所有 commit 提交历史记录具体操作流程:1.创建新分支并且切换到新分支中: git checkout --orphan latest_branch2. 将master的文件都拉取添加到新分支 git add -A3. 提交日志 git commit -am commit message4. 删除master分支 git branch -D master5.将新分支重新命名为master git branch -m master6_fatal: unable to access http://172.168.200.42/00223927/xxfqxt_202002.git/:
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

创投圈高端词汇收集(持续更新中)

CAC 是 Customer Acquisition Cost 的缩写,意思是“用户获取成本”。LTV 是 Life Time Value 的缩写,意思是“用户的终身价值”。PBP 是 Payback Period 的缩写,意思是“回收期”。
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

使用 Webpack 实现 Vue 项目打包流程

安装1.Webpack的基础安装:npm i webpack webpack-cli vue vue-cli webpack-dev-server --save-dev2.常用的loader:[babel-loader, @babel/core, @babel/preset-env, @babel/polyfill, style-loader, css-loader, less-loader, vue-loader, vue-template-compiler, eslint-loader]3.常用的
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

Vue 首次渲染过程简述

   先上图:首先进行Vue的初始化,初始化Vue的实例成员以及静态成员。当初始化结束之后,开始调用构造函数,在构造函数中调用this._init(),这个方法相当于我们整个Vue的入口。在_init()中调用this.$mount(),共有两个this.$mount()。     第一个this.$mount()是entry-runtime-with-compiler.js入口文件,这个$mount()的核心作用是
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

Vue 的响应式原理概述

1. 侦测数据的变化(数据劫持 / 数据代理)– Vue2.0——Object.defineProperty()- 无法检测到对象属性的添加或删除- 无法监听数组的变化,需要进行数组方法的重写– Vue3.0——Proxy- 直接代理整个对象,不需要遍历对象的每个属性- 支持代理数组的变化2. 收集视图依赖了哪些数据(依赖收集)在getter中收集依赖,在setter中触发依赖,将观察者Watcher对象存放到当前闭包中的订阅者Dep的subs中。3. 数据变化时,自动“通知”需要更
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

Vue 中模板的编译过程概述

缓存公共的 mount 函数,并重写浏览器平台的 mount判断是否传入了 render 函数,没有的话,是否传入了 template ,没有的话,则获取 el 节点的 outerHTML 作为 template调用 baseCompile 函数解析器(parse) 将模板字符串的模板编译转换成 AST 抽象语法树优化器(optimize) - 对 AST 进行静态节点标记,主要用来做虚拟DOM的渲染优化通过 generate 将 AST 抽象语法树转换为 render 函数的 js 字符串将.
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

在虚拟 DOM 中设置 Key 的作用和优点

在v-for的过程中,为给每一个节点设置key属性的作用:        以便它能够跟踪每个节点的身份,在进行比较的时候,会基于 key 的变化重新排列元素顺序。从而重用和重新排序现有元素,并且会移除 key 不存在的元素。方便让 vnode 在 diff 的过程中找到对应的节点,然后成功复用。设置key的好处:        可以减少 dom_请简述虚拟 dom 中 key 的作用和好处。
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

简述 Diff 算法的执行过程

在执行Diff算法的过程就是调用名为 patch 的函数,比较新旧节点。一边比较一边给真实的 DOM 打补丁。patch 函数接收两个参数 oldVnode 和 Vnode,它们分别代表新的节点和之前的旧节点。这个patch函数会比较 oldVnode 和 vnode 是否是相同的, 即函数 sameVnode(oldVnode, vnode), 根据这个函数的返回结果分如下两种情况:true:则执行 patchVnodefalse:则用 vnode 替换 oldVnodepatchVnode 函_site:blog.csdn.net
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

Webpack中 Loader 和 Plugin的区别及开发 Loader 和 Plugin 的思路

Loader,直译为加载器。主要是用来解析和检测对应资源,负责源文件从输入到输出的转换,它专注于实现资源模块加载。在Webpack中它将一切文件视为模块,但是webpack原生是只能解析js文件,如果想将其他文件也打包的话,就会用到loader。 所以Loader的作用是让webpack拥有了加载和解析非JavaScript文件的能力。从而将一些浏览器不支持或者有兼容问题的代码处理为浏览器可以支持的资源,如将ES6+转为ES5、Sass转为css、TypeScript转换为JavaScript,或者将内_( webpack)loader和plugin的区别?
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

关于 Http 的面试题目总结

初级题目1.常见状态码 200、301、302、304、403、404、500、503分别代表什么?2.GET与POST有什么区别?3.一次完整的Http请求所经历哪些步骤?4.Http协议是什么?有哪些特点?5.常见Http方法有哪些?使用场景分别是什么?6.在HTML的form 标签里,method支持哪些类型?7.Web安全中有哪些常见的攻击方式?8.URI和URL的区别。中级题目1.说说Http协议的工作流程。2.Https的原理是什么?3.Http请求报文与响应报文的格式?
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

Mybatis的插件运行原理以及如何编写一个Mybatis的插件

Mybatis作为一个优秀的ORM插件有很强大的灵活性,通过插件可以很方便地扩展Mybatis的功能。Mybatis的插件相当于拦截器,是使用JAVA动态代理来实现的。Mybatis对持久层的操作借助于四大组件(Executor,StatementHandler,ParameterHandler,ResultSetHandler)。在创建这四类对象时会判断是否有配置好的插件,若是有则返回被插件代理的动态代理对象。在执行这四类对象的方法时,先判断执行的方法是否是需要代理的方法,如果是则执行插件类的增强方法。
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

Tomcat 的体系结构(超详细)

1.Tomcat架构1.整体架构HTTP 服务器接收到请求之后把请求交给Servlet容器来处理,Servlet 容器通过Servlet接⼝调⽤业务类。Servlet接⼝和Servlet容器这⼀整套内容叫作Servlet规范。注意:Tomcat既按照Servlet规范的要求去实现了Servlet容器,同时它也具有HTTP服务器的功能。Tomcat的两个重要身份​ 1)http服务器也可以看成一个连接器(Connector)​ 2)Servlet容器(Container)2.请求处理流程_tomcat封装了
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

东风“快递”,使命必达

发件后还能变更收件人?“东风快递”最简单有趣的解读:东风11:经营国内快递,主要业务方向是台湾省。东风15:亚洲快递,主要业务方向日本。东风17:服务亚洲和西太平洋,主要客户是美国驻日韩基地。业务亮点是时效性好,高超声速,发件后还能变更收件人,由于采用打水漂技术,燃料经济性较好。东风100:关岛快递。业务亮点是旅途贴地面有掩护,可以拐大弯。可以给大型水面舰船发货。东风26:关岛快递。业务亮点是可以送蘑菇炒蛋。东风31:洲际快递,北美地区部分覆盖。机动揽件。可实行1-3个客户同时送货。东风41:
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

推荐几个MySQL 数据库的运维工具

1. YearningYearning 是一个开源的MySQL SQL语句审核平台,提供数据库字典查询、查询审计、SQL审核等多种功能。在目前 Yearning 有两个版本,1.x 和 2.x。其中 1.x 基于 Python 实现,并且已经不再提供官方的维护,因此强烈建议使用 2.x 版本,2.0 基于 golang 实现。了解更多Yearning工具的安装和使用,详情可参考官网文档:https://guide.yearning.io2. Canalcanal 英文译意为水道/管道,主要用途是基_mysql运维工具
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

android数据库框架DBFlow

创建你的数据库在DBFlow中,创建数据库是非常简单的,只需要定义一个@Database类:@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)public class AppDatabase { public static final String NAME = AppDatabase;..._dbflow 备份
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

SpringBoot+mybaits反向生成mapper+mysql8.0.16

1.新建SpringBoot项目。2.在maven中引入mybaits依赖。3.新建反向生成的工具 mybatisGenerator:3.1在resources目录下创建mybatis-generator目录,然后再创建一个generatorConfig.xml文件,文件内容如下:<?xml version=1.0 encoding=UTF-8?><..._boot mybataas 反向生成
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0

移动端+SpringBoot后端,解决文件下载不全的问题

1.新建移动端项目,SpringBoot项目。2.在Controller中添加以下代码如果在移动端使用了进度条显示,获取了Content-Length,则在后端必须设置response.setHeader(Content-Length,+file.length()); //实现Spring Boot 的文件下载功能,映射网址为/download @RequestM...
分类: 其他 发布时间: 08-06 10:53 阅读次数: 0