<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[u010674395的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u010674395</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010674395]]></copyright><item><title><![CDATA[uniapp上使用document方案之renderjs]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/142206017</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/142206017</guid><author>u010674395</author><pubDate>Fri, 13 Sep 2024 11:18:52 +0800</pubDate><description><![CDATA[使用uniapp做app时候，无法使用document，根据uniapp官方文档，可以引入renderjs是一个运行在视图层的js。它只支持app-vue和web。renderjs。]]></description><category></category></item><item><title><![CDATA[传统mvc项目，前后端不分离项目让静态资源走cdn]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/136564480</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/136564480</guid><author>u010674395</author><pubDate>Fri, 08 Mar 2024 17:19:18 +0800</pubDate><description><![CDATA[静态资源走cdn，能提升网站的响应速度，节约资源。在现在纯前端项目上，可以让整个项目静态资源走cdn，nginx代理跟后端交互，那前后端未分离的项目，怎么让静态资源走cdn呢？先说下springboot+thymeleaf的项目，springboot框架自带VersionResourceResolver类，该类是处理静态资源版本控制的一个类，主要用于实现资源缓存 busting。]]></description><category></category></item><item><title><![CDATA[js垃圾回收机制]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/124667376</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/124667376</guid><author>u010674395</author><pubDate>Mon, 09 May 2022 15:29:24 +0800</pubDate><description><![CDATA[js的垃圾收集
JavaScript具有自动垃圾收集机制，也就是说，执行环境会负责管理代码执行过程中使用的内存。而在C和C++之类的语言中，开发人员的一项基本任务就是手工跟踪内存的使用情况，这是造成许多问题的一个根源。在编写JavaScript程序时，开发人员不用再关心内存使用问题，所需内存的分配以及无用内存的回收完全实现了自动管理。这种垃圾收集机制的原理其实很简单：找出那些不再继续使用的变量，然后释放其占用的内存。为此，垃圾收集器会按照固定的时间间隔（或代码执行中预定的收集时间），周期性地执行这一操作。
]]></description><category></category></item><item><title><![CDATA[js的事件循环（event loop ），宏任务和微任务]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/121504714</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/121504714</guid><author>u010674395</author><pubDate>Tue, 23 Nov 2021 22:50:11 +0800</pubDate><description><![CDATA[setTimeout(function() {
    // 异步宏任务
    console.log('1');
})

new Promise(function(resolve) {
    // 同步
    console.log('2');
}).then(function() {
    // 微任务
    console.log('3');
})

// 同步
console.log('4');

//打印顺序 2 4 3 1

直接上代码。

宏任务：script全部代码、setTim.]]></description><category></category></item><item><title><![CDATA[基于swagger文档生成前端管理页面]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/121456487</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/121456487</guid><author>u010674395</author><pubDate>Sun, 21 Nov 2021 17:15:12 +0800</pubDate><description><![CDATA[直接上图吧




]]></description><category></category></item><item><title><![CDATA[mockjs在vue项目中的使用，不影响测试环境和生产环境]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/107071820</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/107071820</guid><author>u010674395</author><pubDate>Wed, 01 Jul 2020 20:56:18 +0800</pubDate><description><![CDATA[mockjs在项目中的使用

现状：

后台管理系统中，前后端进度可能会出现不一致的情况，前端的许多开发需要依赖后端接口开发的完成，这样就会造成前端的被动状态，会造成迭代前期前端时间充裕，迭代后期前端时间比较紧张（联调时间基本都在前端）

目的：

让迭代更顺畅，解决前后端进度不一致的情况，解决前端必须依赖后台接口的完成才去开发的现状。不影响现有代码

具体实现：

为什么使用mockjs
也许想通过json文件去模拟后台接口的数据，但是获取到的数据是固定的，而且很局限，增删改的接口怎么去实现？

Mock]]></description><category></category></item><item><title><![CDATA[浏览器缓存之http缓存和service worker]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/106981924</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/106981924</guid><author>u010674395</author><pubDate>Sat, 27 Jun 2020 14:10:43 +0800</pubDate><description><![CDATA[一、什么是浏览器缓存

以往谈起性能优化，大部分时候都是从后端聊起，数据库的设计，缓存的使用等。其实前端在性能优化方面可做的也很多，如：减少http请求数、使用cdn、压缩合并css/js等，浏览器缓存就是把已经请求过的Web资源进行存储，当用户刷新页面或者下次访问时候，浏览器根据缓存机制决定是否需要向服务端发起请求。 所以缓存可以带来：减少网络带宽消耗、降低服务器压力、减少网络延迟，加快页面打开速度等优点

二、浏览器缓存有哪些

1、http缓存是基于HTTP协议的浏览器文件级缓存机制。

2、w...]]></description><category></category></item><item><title><![CDATA[long.js的使用]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/85340580</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/85340580</guid><author>u010674395</author><pubDate>Sat, 29 Dec 2018 16:19:20 +0800</pubDate><description><![CDATA[如果是node启动的项目  直接npm install long安装就可。

若传统项目，则把webpack打包之后的long.js引入到页面直接使用。

下面是对long的or运算和and运算又封装的方法


//long类型或运算
function longOr(arr) {
    var arrLen = arr.length;
    if (arrLen &amp;lt; 1) {
     ...]]></description><category></category></item><item><title><![CDATA[webpack小记]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/85038500</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/85038500</guid><author>u010674395</author><pubDate>Sun, 16 Dec 2018 17:30:31 +0800</pubDate><description><![CDATA[1、webpack是什么？

Webpack 是当下最热门的前端资源模块化管理和打包工具。它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源webpack的安装

2、首先要确保安装了node

其次可以全局安装，可以项目中安装

npm install webpack (--g)

3、webpack使用

（1）执行命令  webpack main.js bundle.js
...]]></description><category></category></item><item><title><![CDATA[vue-cli解析]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/84900373</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/84900373</guid><author>u010674395</author><pubDate>Sat, 08 Dec 2018 23:00:24 +0800</pubDate><description><![CDATA[上次给大家分享的是用vue-cli快速搭建vue项目，虽然很省时间和精力，但想要真正搞明白，我们还需要对其原理一探究竟。
大家拿到一个项目，要快速上手，正确的思路是这样的：
首先，如果在项目有readme.md的情况下，大家要先读readme，项目的一些基本介绍，包括项目信息、运行的脚本、采用何种框架，以及项目维护者等信息通常都会有。一般在git上维护的项目都会有readme.md，不熟悉mark...]]></description><category></category></item><item><title><![CDATA[js桥接模式]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/84714020</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/84714020</guid><author>u010674395</author><pubDate>Sun, 02 Dec 2018 15:17:47 +0800</pubDate><description><![CDATA[桥接模式：在系统沿着多个维度变化的同时，又不增加复杂度并已达到解耦。

比如：鼠标移上去事件，改变背景和颜色


function g(tag){
    return document.getElementByTagName(tag);
}
var spans=g('span');
spans[0].onmouseover=function(){
    this.style.color='re...]]></description><category></category></item><item><title><![CDATA[js装饰者模式]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/84201786</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/84201786</guid><author>u010674395</author><pubDate>Sun, 18 Nov 2018 16:40:42 +0800</pubDate><description><![CDATA[装饰者模式：在不改变原对象的基础上，通过对其进行包装扩展（添加属性或者方法）使原有对象可以满足用户的更复杂需求。


var decorator = function(input,fn){
	//获取事件源
	var input = document.getElementById(input);
	//若事件源已经绑定事件
	if(typeof input.onclick === 'functio...]]></description><category></category></item><item><title><![CDATA[js设计模式 套餐服务——外观模式]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/84199408</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/84199408</guid><author>u010674395</author><pubDate>Sun, 18 Nov 2018 15:12:19 +0800</pubDate><description><![CDATA[外观模式：为一组复杂的子系统接口提供一个更高级的统一接口，通过这个接口使得对子系统接口的访问更容易。在js中有时也会用于对底层结构兼容性做统一封装来简化用户使用。

兼容模式


&lt;a id="myinput"&gt;click&lt;/a&gt;
&lt;script&gt;
function addEvent(dom, type, fn) {
    // 对于支持DOM2级事件处理程序...]]></description><category></category></item><item><title><![CDATA[js设计模式单例模式]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/83958982</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/83958982</guid><author>u010674395</author><pubDate>Sun, 11 Nov 2018 16:02:41 +0800</pubDate><description><![CDATA[单例模式：又称单体模式，是只允许实例化一次的对象类。有时也用一个对象来规划一个命名空间，井井有条地管理对象上的属性和方法 。

命名空间的管理员

防止变量或方法重复


var ming={
    g:function(id){
        return document.getElementById(id);
    },
    css:function(id,key,value){
...]]></description><category></category></item><item><title><![CDATA[js设计模式语言之魂——原型模式]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/83958186</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/83958186</guid><author>u010674395</author><pubDate>Sun, 11 Nov 2018 14:24:34 +0800</pubDate><description><![CDATA[原型模式：用原型实例指向创建对象的类，使用于创建新的对象的类共享原型对象的属性以及方法。

基于原型链实现对象之间的继承，这种继承是基于一种对方法或属性的共享，而不是对方法和属性的复制。

原型模式就是将可复用的、可共享的、耗时大的从基类中提出来然后放在其原型中，然后子类通过组合继承或者寄生组合式继承而将方法和属性继承下来，对于子类中那些需要重写的方法进行重写，这样子类创建的对象既具有子类的属性和...]]></description><category></category></item><item><title><![CDATA[js设计模式分既是合——建造者模式]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/83926447</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/83926447</guid><author>u010674395</author><pubDate>Sat, 10 Nov 2018 09:46:09 +0800</pubDate><description><![CDATA[建造者模式：将一个复杂对象的构建层与其表示层相互分离，同样的构建过程可采用不同的表示。

工厂模式主要是为了创建对象实例或者类簇，关心的是最终产出的是什么。不关心你创建的整个过程，仅仅需要知道最终创建的结果。所以通过工厂模式我们得到的都是对象实例或者类簇。
然而建造者模式在创建对象是更为复杂一些，虽然其目的也是为了创建对象，但他更多关心的是创建这个对象的整个过程，甚至于创建对象的每一个细节。

比...]]></description><category></category></item><item><title><![CDATA[js设计模式抽象工厂模式]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/83795543</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/83795543</guid><author>u010674395</author><pubDate>Tue, 06 Nov 2018 22:43:51 +0800</pubDate><description><![CDATA[抽象工厂模式(Abstract Factory) 通过类的抽象使得业务适用于一个产品类簇的创建，而不负责创建某一类产品的实例。
JS中是没有直接的抽象类的，因此我们需要在类的方法中抛出错误来模拟抽象类，如果继承的子类中没有覆写该方法而调用，就会抛出错误。


//汽车抽象类
var Car = function(){};
Car.prototype = {
    getPrice: functi...]]></description><category></category></item><item><title><![CDATA[对引入的axios进行封装]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/83589326</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/83589326</guid><author>u010674395</author><pubDate>Wed, 31 Oct 2018 19:39:22 +0800</pubDate><description><![CDATA[直接上代码


/**
 * 封装axios
 * author:taowj
 * 用法案例
 * httpAxios.post(url, params, function (response) {
 *    if (response.status &amp;gt;= 200 &amp;amp;&amp;amp; response.status &amp;lt;= 300) {
 *         //成功
 *    }e...]]></description><category></category></item><item><title><![CDATA[js设计模式之工厂方法模式]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/83479273</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/83479273</guid><author>u010674395</author><pubDate>Sun, 28 Oct 2018 22:49:02 +0800</pubDate><description><![CDATA[对于创建多类对象，简单工厂就不太实用了。

通过工厂方法模式可以轻松的创建多个类的实例对象，而且创建对象的方式避免了使用者与对象类之间的耦合，用户不必关心创建该对象的具体类，只需调用工厂方法即可。

安全的工厂方法模式


var Factory=function(type,content){
    if(this instanceof Factory){
        var s = ne...]]></description><category></category></item><item><title><![CDATA[js设计模式简单工厂模式]]></title><link>https://blog.youkuaiyun.com/u010674395/article/details/83450708</link><guid>https://blog.youkuaiyun.com/u010674395/article/details/83450708</guid><author>u010674395</author><pubDate>Sat, 27 Oct 2018 22:45:02 +0800</pubDate><description><![CDATA[简单工厂模式又叫静态工厂方法，由一个工厂对象决定创建某一种产品对象类的实例。主要用来创建同一类的对象。

比如提示弹窗类


function createPop(type,text){
    //创建一个对象，并对对象拓展属性和方法
    var o = new Object();
    o.content = text();
    o.show = function(){
      ...]]></description><category></category></item></channel></rss>