git使用问题
Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等.如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征.
git的基础使用
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件.Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持.
ES6模块化语法
1. ES6 模块化1.1 回顾:node.js 模块化
node.js 遵循了 CommonJS 的模块化规范。其中:
导入其它模块使用 require() 方法
模块对外共享成员使用 module.exports 对象
模块化的好处:
大家都遵守同样的模块化规范写代码,降低了沟通的成本,极大方便了各个模块之间的相互调用,利人利己。
1.2 前端模块化的分类 (了解)在 ES6 模块化规范诞生之前,JavaScript 社区已经尝试并提出了 AMD (国外 requirejs)、CMD (国内 seajs 淘宝)、CommonJS (nodejs) 等模块化规范
但是,这些由社区提出的模块化标准,还是存在一定的差异性与局限性、并不是浏览器与服务器通用的模块化标准
例如:
AMD 和 CMD 适用于浏览器端的 Javascript 模块化
CommonJS 适用于服务器端的 Javascript 模块化
太多的模块化规范给开发者增加了学习的难度与开发的成本。因此,大一统的 ES6 模块化 规范诞生了!
1.3 什么是 ES6 模块化规范 (统一)ES6 模块化规范是浏览器 ...
高阶函数之柯里化
柯里化在计算机中,柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术例如:
var foo = function(a) { return function(b) { return a * a + b * b; }}(foo(3))(4) 或 foo(3)(4)
柯里化的通用式
使用ES5的实现
// ES5 的实现function currying(func, args) { // 形参个数 var arity = func.length; // 上一次传入的参数 var args = args || []; return function () { // 将参数转化为数组 var _args = [].slice.call(arguments); // 将上次的参数与当前参数进行组合并修正传参顺序 Array.prototype.unshift.a ...
vue之vuex模块化管理
vue3.0的使用安装vuex-新建store文件夹npm install vuex@next --save
并在根目录src下创建store文件夹,并创建文件模块
└─src ├─assets ├─components ├─store │ └─modules │ └─└─moduleA.js │ └─└─moduleB.js │ └─index.js │ └─getters.js └─util
在store文件夹中配置根store// index.jsimport { createStore } from 'vuex'import moduleA from './modules/moduleA'import moduleB from './modules/moduleB'import getters from './getters'const store = createStore({ modules: & ...
javascript之try...catch...使用
简单的try-catch使用try { console.log(x)} catch (error) { console.log('normal',error)}// normal ReferenceError: x is not defined
控制台不会报错,catch到的信息会被显示出来,不影响后面的代码运行
异步中的try-catch的使用async asyncFun() { try { setTimeout(() => { console.log(c) },100) } catch (error) { console.log('asyncError: ', error); }}asyncFun() // Uncaught ReferenceError: c is not defined
控制台会报错,setTimeout,setInterval等宏观任务会在主任务队列之后 ...
vue之解析Excel表格
安装xlsx
npm i xlsx
使用
<div><input type="file" accept=".xlsx,.xls" @change="readWorkbook($event)"/></div>
import * as XLSX from 'xlsx';data() {return { files: [], filename: ''}}async readWorkbook(e) { this.files = e.target.files this.filename = this.files[0].name try { const file = this.files[0] const buffer = await file.arrayBuffer() console.log('buffer: ', buffer); ...
javascript之手写Promise
面试的时候遇到的问题,手写一个实现Promise的功能
const PENDING = 'PENDING'const FULFILLED = 'FULFILLED'const REJECTED = 'REJECTED'class PromiseTest {constructor(executor) {this.status = PENDINGthis.value = undefinedthis.reason = undefinedthis.onResolvedCallbacks = []this.onRejectedCallbacks = []this.onFinallyCallbacks = []let resolve = (value) => { if (this.status === PENDING) { this.status = FULFILLED this.value = value } this.onResolvedCallback ...
vue之强制刷新组件
有时候,依赖Vue响应式方式更新数据是不够的,相反,我们需要手动重新渲染组件来更新数据。或者,我们可能只想抛开当前DOM,重新开始。问题来了,怎么让Vue以正确的方式呈现组件呢?
1.有以下解决方法:
简单粗暴的方式:重新加载整个页面
不妥的方式:使用 v-if
较好的方式:使用 Vue的内置 forceUpdate方法
2.对比以上方法:
简单粗暴的方式(重新加载整个页面):这相当于每次你想关闭应用程序时都要重新启动你的电脑。
不妥的方式(使用v-if):v-if指令,该指令尽在组件上为 true时才渲染。如果为false,则该组件在DOM中不存在。
较好的方法(forceUpdate):这是解决这个问题的两种最佳方法之一。
3.然而上面的三种方法都不是最佳的方法,最好的方法是:在组件上进行 key更改。
在很多情况下,我们需要重新渲染组件。
要正确地做到这一点,我们将提供一个 key 属性,以便Vue知道特定的组件与特定的数据片段相关联。如果 key 保持不变,则不会更改组件,但是如果 key 发生更改,Vue就hi知道应该删除旧组件并创建新组件。
4.为什么我们需要在 Vue 中 ...
vue周期函数运行顺序
最近有看到一个问题说:vue中computed、watch、updated谁先执行?因为之前没有注意过执行顺序,今天特地研究了一下。希望研究结果能给各位小伙伴做个参考!话不多说,先上代码:1、template中的html结构如下,这是一个子组件,父组件用props传过来一个secondNum值,子组件自己有一个firstNum值,有一个按钮,用来改变firstNum值
<div> <h4>父组件传值secondNum:{{ secondNum }}</h4> <h4>自己的值firstNum:{{ firstNum }}</h4> <h4>computed之thirdNum:{{ thirdNum }}</h4> <button>改变firstNum</button></div>
2、js代码如下:
export defau ...