-
Vue的设计模式有哪些?
1)工厂模式:传入参数即可创建实例
2)订阅-发布模式:发布订阅模式的核心是一对多的关系,一个发布者发起事件,所有的订阅者都会执行
发布订阅模式是由统一的调度中心调用,发布者和订阅者不知道对方的存在。
3)观察者模式:响应数据原理
目标对象和观察者对象是相互依赖的
4)单例模式:整个程序有且仅有一个实例
5)装饰模式:(@装饰器的用法)在不改变原对象的基础上,通过对其添加属性或方法来进行包装拓展,使得原有对象可以动态具有更多功能。
Actions是一个装饰器,它包裹Mutations使之可以异步使用。对于store对象,使用Actions可以异步改变状态;不用Actions也能使用Mutations来同步改变状态;使用Actions也不会改变State、Getters、Mutations的用法、结构
6)策略模式:指对象有某个行为,但是在不同的场景中,该行为有不同的实现方案
let strategy = { 'A': function (bonus) { return bonus * 4 }, 'B': function (bonus) { return bonus * 3 } } function fn (level, bonus) { return strategy[level](bonus) } let result = fn('A', 4000) console.log(result, 'result') -
Vue项目要部署到二级目录,要怎么做?
假设二级目录名为h5
1)在vue.config.js中修改publicPath的配置为'/h5/'
2)在router.js中修改mode为'history',base改为'/h5/'
3)nginx配置修改
location /h5/ {
try_files $uri $uri/ /h5/index.html;
}
5. Vue怎么引入第三方库
1) 作为一个全局变量,挂载到window对象上。
entry.js
window._ = require('lodash');
myComponent.vue
export default{created() {console.log(_.isEmpty()?'lodash everywhere':'oh')}}
2) 在每个文件中引入,用import
此方式比较繁琐,若项目不再依赖这个库,需要找到所有的引用并删除
3) 优雅的方式,将其代理到Vue原型 对象上去,例如Moment库的引入
entry.js
import moment from 'moment';
Object.defineProperty(Vue.prototype,'$moment', { value: moment });
由于所有组件都会从vue的原型对象上继承他们的方法,因此所有的组件/实例中都可以通过this.$moment的方式访问Moment
4)
7. px与pt的区别?
pt (point,磅): 是一个物理长度单位,指的是72分之一英寸。
px (pixel,像素): 是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数),在扫描打印时一般都有DPI可选。
- 冒泡排序怎么实现?还知道其他排序方式吗? 两层循环,外层循环每执行一次,内层循环比较出最大或最小的数。复杂度O(N2) 其他排序方式还有快速排序,归并排序,希尔排序