mui mint 使用在什么地方啊??还有拦截器的使用,觉得脑袋空空的…没信心…
拦截器:做数据交互类似cookie的应用,不局限于浏览器,在拦截器请求发起之前加上自定义的头,
如果A页面需要加载数据显示或隐藏loadding图标 B页面也需要,C页面也需要
拦截器:在发起请求之前,显示loadding图标 在响应回来以后,隐藏loadding图标
今天吸收的不错,就是不知知道晚上跟不跟上节奏,自己做的时候会报很多错,费时间,老师我用的vscode不能写注释,能不能帮忙解决一下,不太愿意又换编辑器,换个老师就换编辑器,太麻烦,,老师辛苦了
插件
问题1: 这两个中的‘:cid’和‘title’一个是变量 一个是常量?怎么区分何时用变量何时用常量。 问题2:老师你的html是混杂模式的,但现在都写严格模式的,就像你首页轮播图样式给的max-height根本就不生效,我要写height才能显示轮播图效果,H5之后不都是严格模式的吗?你写的是H几啊?????
1.上拉加载更多再讲讲吧,不太懂 2.老师,上课前能先把飞秋上一下吗,晚上敲代码的时候出现的bug,解决一下,然后再上课 3.别忘了补充知识,上传文件3种方式 multipart/form-data
拦截器不太懂
希望老师能抽空帮我们总结一下面试的时候用来装A的话
{test: /vue-preview.src.*?js$/, loader: 'babel-loader'}
此时注意在图片对象中配置宽高ele.w = 500; ele.h = 400; 设置缩略图的高{"presets":["es2015"], "plugins": ["transform-runtime"]}
Axios.interceptors.request.use(function(config){ Mint.Indicator.open({ text: 'loading...',spinnerType: 'fading-circle'});return config})
Axios.interceptors.response.use(function(config){ Mint.Indicator.close(); return config})
this.refs.loadmore.onBottomLoaded()
if(res.data.message.length !== 10) this.allLoaded = true;
禁止调用上拉函数document.querySelector('form').onsubmit = function(e){
e.preventDefault(); //阻止表单默认行为 (return false)
var formData = new FormData();
//myFile是表单中的name属性 第二个对象是文件的数 据对象
formData.append("myFile", document.getElementById('file').files[0]);
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState === 4 && xhr.status === 200){
console.log("OK!");
}else{
console.log(xhr.status);
}
}
xhr.open("post", '/upload');
xhr.send(formData);
}
${'form'}.on('submit',function(e){
e.preventDefault();
var formData = new FormData();
formData.append("myFile", document.getElementById('file').files[0]);
$.ajax({
type: 'post',
url: './upload',
data: formData, //必须是键值对的形式自动设置头部信息 content-type: application/x-www-form-urlencoded
contentType: false, //不需要默认的头
processData: false, //不需要转换数据
success: function(){
console.log("OK!");
}
});
})
created(){connect.$on("addShopCart',(num)=>{this.pickNum += num;})]}
addShopCart(){ connect.$emit("addShopCart", this.num)};
.ball-enter-active{
animation: bounce-in .5s;
}
@keyframes bouce-in{
0%{
transform: translate3d(0,0,0);
}
50%{
transform: translate3d(140px,-50px,0);
}
75%{
transform: translate3d(160px,0,0);
}
100%{
transform: translate3d(140px,300px,0);
}
}
v-on:before-enter/enter/after-enter/enter-cancelled
<transition name="ball" @after-enter="afterEnter">
<div> class="ball" v-if="isShow">div>
transition>
...
//点击时设置isShow为true
afterEnter(){
this.isShow = false;
}
let store = window.localStorage;
let prodTools = {};
let prods = JSON.parse(store.getItem('prods') || '{}'); //用于本地存储
prodTools.add = function(p){
if(prods[p.id]){
prods[p.id] += p.num;
}else{
prods[p.id] = p.num;
}
this.save(prods);
}
prodTools.delete(id){
delete prods[id];
this.save(prods);
}
prodTools.getProds(){
return JSON.parse(store.getItem('prods') || '{}');
}
prodTools.getTotalCount(){
let sum = 0;
for(let id in prods){
sum += prods[id];
}
return sum;
}
//存储
prodTools.save(prods){
store.setItem('prods', JSON.stringify(prods));
}
export default prodTools;
this.$router.push({name: 'goods_comment',query:{id}})
router.beforeEach((to, from, next)=>{})
beforeEnter:(to,from,next)=>{}
beforeRouteEnter/beforeRouteLeave/beforeRouteUpdate
beforeRouteEnter (to, from, next) {
在渲染该组件的对应路由被 confirm 前调用
不!能!获取组件实例 `this`
因为当钩子执行前,组件实例还没被创建
不过可以创建回调给next来访问组件实例
let myTitle = '';
if(from.name === 'news.list'){
//news
myTitle = '新闻列表';
}
next(vm =>{
//通过vm访问组件实例
vm.title = myTitle;
})
},
beforeRouteUpdate (to, from, next) {
在当前路由改变,但是该组件被复用时调用
举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
可以访问组件实例 `this`
},
beforeRouteLeave (to, from, next) {
导航离开该组件的对应路由时调用
可以访问组件实例 `this`
}
Object.keys(obj)
获取属性后拼接字符串发起请求vm.$set(target,key,value)
this.$set(ele, 'num', prods[ele.id]);
this.$set(ele, 'isPicked', true);
//注意this指针问题
Object.keys(obj).length === 0
<transition name="router">
<router-view>router-view>
transition>
<style scoped>
.router-enter-active, .router-leave-active{
transition: opacity .5s;
}
.router-enter, .router-leave-to{
opacity: .5s;
}
style>
filename: '[name].[chunkhash:6].js'
new ExtractTextPlugin("style.[contenthash:6].css")
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
import Header from 'mint-ui/lib/header';
import Lazyload from 'mint-ui/lib/lazyload';
Vue.component(Header.name, Header);
Vue.use(Lazyload);
//...
entry: {
main: './src/main.js',
vendors: ['vue','vue-router','moment','axios', 'vue-preview']
}
//...
plugins:[new webpack.optimize.CommonsChunkPlugin({
//manifest记录使用第三方包和依赖关系
names: ['vendors','manifest']
}),
//混淆代码
new UgifyJSPlugin()
]
filename: 'js/[name].[chunkhash:6].js'
publicPath: '/'
const Foo = resolve => require(['./Foo.vue], resolve)