Vue项目从webpack3.x升级webpack4完全指南

近日,泡面将自己的一个Vue-cli构建的前端框架从webpack3.x升级到了4.x版本。其中有一些细节还是需要记录一下,以免过两天就忘记了。

原先的环境

  • 项目原先通过Vue-cli 2.9.3 版本构建,
  • 原先使用的webpack 3.x版本

首先需要对基础包进行更新(package.json)

  • webpack 更新到4.x版本,泡面这里更新到了4.28.3
  • 更新webpack-dev-server,泡面更新到了3.1.14版本,
  • 安装webpack-cli,泡面安装的是3.2.1版本

继续阅读Vue项目从webpack3.x升级webpack4完全指南

分享一个数学计算

前几天群里不认识的一个哥们,需要计算一下:
A+B=C,其中 C 不包含 A,B 中任意数字的集合
一时闲来无事,正好练练手,用python写了下,代码如下:

# -*- coding: utf-8 -*-
import time

'''
A+B=C,C不包含A,B中任意数字
'''

'''按位切分数字,返回字典{0-9,0-1}
ex{
  0:1,
  9:1
} 说明结果中包含0,9两个数字
'''
def spiltNumber( num ):
    n = num
    result = {}
    while (n > 0):
        if(n % 10 not in result):
            result[n % 10] = 1
        n = n / 10
    return result

# 2个字典取并集,为空说明不重复
def checkDictContains(dict1,dict2):
    return len(dict.fromkeys([x for x in dict1 if x in dict2])) == 0

def getList(start, end):
    list = range(start, end)
    return list

def getResult(start,end):
    # 返回的结果列表
    result = []
    # 迭代的次数
    z = 0
    for i in range(start, end):
        print("执行矩阵运算 x:%d,y:(%d~%d)..." % (i,i,end))
        for j in range(i, end):
            z += 1
            # 将左侧乘数转成倒排索引
            leftNumberDict = dict(spiltNumber(i), **spiltNumber(j))
            # 结果转换成倒排索引
            count = i + j
            countDict = spiltNumber(count)
            if (checkDictContains(countDict, leftNumberDict)):
                result.append(" %d + %d = %d" % (i, j, count))
                print("匹配结果: %d + %d = %d" % (i, j, count))
    print("匹配的结果数:%d" % (len(result)))
    print("迭代总次数:%d" % (z))

if __name__ == '__main__':
    startTime = time.time()
    getResult(100,999)
    print("执行时间:%d s" % (time.time()-startTime))

执行结果如下:

...
执行矩阵运算 x:992,y:(992~999)...
执行矩阵运算 x:993,y:(993~999)...
执行矩阵运算 x:994,y:(994~999)...
执行矩阵运算 x:995,y:(995~999)...
执行矩阵运算 x:996,y:(996~999)...
执行矩阵运算 x:997,y:(997~999)...
执行矩阵运算 x:998,y:(998~999)...
匹配的结果数:55509
迭代总次数:404550
执行时间:4 s

继续阅读分享一个数学计算

复习Javascript原型链

现在我们在日常的工作中由于有各种大神造好的轮子,导致我们在业务开发中已经很少能经常性接触到开发低层的一些事情。有时候就要时不时的给自己充充电,否则我们就只能用降龙十八掌吓唬人了,根本没有内功 :P

原型对象和构造函数

我们从一个构造函数开始:

function Person (name) {
  this.name = name
}
var person = new Person('Jack')

我们在声明它的时候,JS会自动生成一个与其对应原型对象(原型对象是对象),该构造函数会有一个内部属性,名为prototype指向原型对象,你可以通过Person.prototype来访问其中的内容,这也就是我们通常在原型对象上挂载属性和方法的方式。

继续阅读复习Javascript原型链