“汉诺塔”是一个著名的益智游戏。塔上有3根柱子和一套直径各不相同的空心圆盘。开始时柱子上的所有圆盘都按照从小到大的顺序堆叠。目标是通过每次移动一个圆盘到另一根柱子,最终把一堆圆盘移动到目标柱子上,过程中不允许把交大的圆盘放置在较小的圆盘之上。 仔细解读这段话,如果有10个圆盘甚至更多,那操作步骤绝对多到让人震惊,但目标是把一堆圆盘移动到目标柱子上,如果把上面的9个圆盘看成一套,第10个圆盘看成另一套,先移...
首先在使用 vue create my-project 创建项目的时候要选择使用 css 预处理器。 安装 vue-cli 首先使用 npm 安装 vue-cli v3.0。 npm install -g @vue/cli安装完成后使用 vue -V 查看版本号,如果显示版本号说明安装完成。 创建项目 vue-cli v3.0 创建项目的命令与 2.0 有所不同。3.0 创建项目的命令为: vue create test-project 创建过程中首先选择创建的模式,是采用默认配置,还是自定义配置: 通过上下箭头进行选择。window 默...
vue单文件 vue是现今非常流行的框架之一,整体给人的感觉就是优雅,小巧,最近开始学习着使用该框架做一些项目,学习,当然是从实践开始,在浏览了一遍官方文档之后,便开始用vue-cli脚手架来快速搭建一个vue项目,从实践中快速学习。在看了一遍项目文件结构后,对于.vue结尾的单文件却是有很多不解的地方,具体碰到的问题如下: 什么是<template/>标签template是html5的一个新元素,主要用于保存客户端中的内容,表现为浏览器解析...
最近研究了vue性能优化,涉及到vue异步组件和懒加载。一番研究得出如下的解决方案。 原理:利用webpack对代码进行分割是懒加载的前提,懒加载就是异步调用组件,需要时候才下载。 案例: 首先是组件,创建四个组件分别命名为first、second、three和four;内容如下 first<template> <div>我是第一个页面</div> </template>second<template> <div>我是第二个页面</div> </template>three<template> <div>我是第三个页面</div> </temp...
前言 在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总结,很多时候就算用过几次这个api,在开发中也很容易忘记,还是要谷歌一下。所以就希望对这块内容有一个比较系统性的总结,在这背景下,就有了本篇文章,如果喜欢的话可以点波赞/关注,支持一下,希望大家看完本文可以有所收获。 创建一个数组: // 字面量方式: // 这个方法也是我们最常用的,在初始化数组的时候 相...
众所周知,Node.js中的JavaScript代码执行在单线程中,非常脆弱,一旦出现了未捕获的异常,那么整个应用就会崩溃。这在许多场景下,尤其是web应用中,是无法忍受的。通常的解决方案,便是使用Node.js中自带的cluster模块,以master-worker模式启动多个应用实例。然而大家在享受cluster模块带来的福祉的同时,不少人也开始好奇: 为什么我的应用代码中明明有app.listen(port);,但cluter模块在多次fork这份代码时,却没有报端口已被...
stringObject.substring(start,stop) 用于提取字符串中介于两个指定下标之间的字符。 start必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。 stop可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。 start从0开始 到stop(不包含stop)结束 不接受负的参数。 stringObject.substr(start,length)可在字符串中抽取...
基本实例 <div id="example"><p>Original message: "{{ message }}"</p><p>Computed reversed message: "{{ reversedMessage }}"</p> </div> var vm = new Vue({el: #example,data: {message: Hello},computed: {// 计算属性的 getterreversedMessage: function () {// `this` 指向 vm 实例return this.message.split().reverse().join()}} })结果:Original message: "Hello" Computed reversed message: "olleH"这里我们声明了一...
vue.js是什么? Vue (读音 /vju?/,类似于 view) 是一套用于构建用户界面的渐进式框架。 说明及下载Vue.js使用文档已经写的很完备和详细了,通过以下地址可以查看: https://cn.vuejs.org/v2/guide/ vue.js如果当成一个库来使用,可以通过下面地址下载: https://cn.vuejs.org/v2/guide/installation.html Vue.js基本概念我们下载了vue.js后,需要在页面上通过script标签引入vue.js,开发中可以使用开发版本vue.js,产品上线要换成...
v-bind 指令用于响应地更新 HTML 特性 形式如:v-bind:href 缩写为 :href; v-on 指令用于监听DOM事件 形式如:v-on:click 缩写为 @click; <body><div id="test"><img v-bind:src="src"><a v-bind:href="url" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >百度一下</a><a :href="url" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel=...
我们平时写的 .vue 文件称为 SFC(Single File Components),本文介绍将 SFC 解析为 descriptor 这一过程在 vue 中是如何执行的。 vue 提供了一个 compiler.parseComponent(file, [options]) 方法,来将 .vue 文件解析成一个 descriptor: // an object format describing a single-file component. declare type SFCDescriptor = {template: ?SFCBlock;script: ?SFCBlock;styles: Array<SFCBlock>;customBlocks: Array<SFCBlock>; ...
使用Node.js,IDE采用sublime 3。 var randomBytes = require(randombytes) var BigInteger = require(bigi) var ecurve = require(ecurve) var crypto = require(crypto) var cs = require(coinstring) var secp256k1 = ecurve.getCurveByName(secp256k1) var randombytes = randomBytes(32).toString(hex) var privateKey = new Buffer(randombytes, hex)console.log("私钥:" + privateKey.toString(hex)) var ecparams = ecurve...
上一章没什么经验。直接写了组件机制。感觉涉及到的东西非常的多,不是很方便讲。今天看了下vue的关于事件的机制。有一些些体会。写出来。大家一起纠正,分享。源码都是基于最新的Vue.js v2.3.0。下面我们来看看vue中的事件机制: 老样子还是先上一段贯穿全局的代码,常见的事件机制demo都会包含在这段代码中: <div id="app"><div id="test1" @click="click1">click1</div><div id="test2" @click.stop="click2">click2</div><my-...
每次学新东西总感觉自己是不是变笨了,看了几个博客,试着试着就跑不下去,无奈只有去看官方文档。 webpack是基于node的。先安装最新的node。 1.初始化 安装node后,新建一个目录,比如html5。cmd中切到当前文件夹。 npm init -y 这个命令会创建一个默认的package.json。它包含了项目的一些配置参数,通过它可以进行初始安装。详细参数:https://docs.npmjs.com/files/package.json。 不要y参数的话,会在命令框中设置各项参数,但...
前端需要频繁的修改js和样式,且需要根据浏览器的页面效果不断的做调整;而且往往我们的开发目录和本地发布目录不是同一个,修改之后需要发布一下;另外一点就是并不是所有的效果都可以直接双击页面就能看到,我们常常需要在本地用nginx建一个站点来观察(自己电脑上ok了才放到测试环境去)。所以如果要用手工刷新浏览器和手动(或点击)发布,还要启动站点,确实是个不小的体力活。而这三点webpack可以帮我们做到。 webpack-dev-serve...