postcss-px-to-viewport
1postcss移动端适配:
postcss-px-to-viewport
1 加浏览器前缀
2 在代码里设置px,框架自动设置成rem
3 css全局全命名
yarn add -D postcss-px-to-viewport
webpack别名
移动端布局方案非常重要,写篇博客记录下来 vue.config.js是框架底层编译的,不可随意改名
掌握两种:
1 rem + 根节点vm
2 postcss to viewport 插件 可以直接写Px,插件帮你转成vw,全转成vw
如果需要屏幕越宽展示越多需要px
在vue.config里面,propList:["*"]表示全部转换
一像素问题:
不同的设备像素比最终的逻辑像素,1px,如果设备像素是3,物理像素是3
为了不同设备精细度一样,根据dpr做了语法
const pxtovw = require('postcss-px-to-viewport')
const path = require('path')
module.exports = {
//代理
devServer: {
proxy: {
//代理,只要是/api路径下的请求,都转发到以下端口路径
'/api': {
target: 'http://localhost:3005/',
//跨域
changeOringin: true,
pathRewrite: {
//配置api代理
// '^/api/ajax': ''
}
},
'/maoyan':{
target:'http://m.maoyan.com',
changeOringin:true,
pathRewrite:{
'^/maoyan':''
}
}
}
},
css: {
loaderOptions: {
css: {
// 这里的选项会传递给 css-loader
},
postcss: {
// 这里的选项会传递给 postcss-loader
plugins: [
new pxtovw({
unitToConvert: 'px',
viewportWidth: 375,
unitPrecision: 5,
propList: ['*'],
viewportUnit: 'vw',
fontViewportUnit: 'vw',
selectorBlackList: [],
minPixelValue: 1,
mediaQuery: false,
replace: true,
exclude: [/node_modules/]
})
]
}
}
},
chainWebpack: config => {
config.resolve.alias.set('assets', path.resolve(__dirname, './src/assets/'))
config.resolve.alias.set('views', path.resolve(__dirname, './src/views/'))
},
pages: {
index: {
// page 的入口
entry: 'src/main.js',
// 模板来源,一会需要一个模板两个文件名
template: 'public/index.html',
// 在 dist/index.html 的输出
filename: 'index.html',
// 当使用 title 选项时,
// template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
title: 'Index Page',
// 在这个页面中包含的块,默认情况下会包含
// 提取出来的通用 chunk 和 vendor chunk。 index要和上面对应,指定的是入口的js文件名
chunks: ['chunk-vendors', 'chunk-common', 'index']
},
detail: {
// page 的入口
entry: 'src/detail.js',
// 模板来源
template: 'public/index.html',
// 在 dist/detail.html 的输出,这里不能叫index.html,否则会被覆盖
filename: 'detail.html',
// 当使用 title 选项时,
// template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
title: 'detail Page',
// 在这个页面中包含的块,默认情况下会包含
// 提取出来的通用 chunk 和 vendor chunk。 index要和上面对应,指定的是入口的js文件名
chunks: ['chunk-vendors', 'chunk-common', 'detail']
},
}
}
json-server
装全局
{
"/api/ajax/hotshowing":"/hotshowing"
}
这样配置以后
"mock":"json-server ./mock/mock.js -r ./mock/routes.json -p 3005"
/api/ajax/hotshowing和/hotshowing都可以访问
装anxios
yarn add axios -S 生产环境的依赖
过滤器实现图片url替换
处理1px问题加横线
export default{
filters:{
formatImg(url){
return url.replace(/w.h/,'64.90');
}
}
}
使用::src:"item.url | formatImg"
http 不考虑业务 movie是考虑了业务
mintui -S 基于vue.js的ui
import Indicator from 'mint-ui' loading框
Indicator.open();
Indicator.close();
设置网速
谷歌控制台 network slow3G
性能优化可以用这个来测试
better-scroll -S
做项目不要用beta,是最新的版本
再装pullup上拉插件
使用下拉
为什么mouted挂载之后无法执行?
nextTick 将回调延迟到下次循环更新执行
在created里卖,即使没有挂在,用nextTick也可以强制再挂载后执行
this.$nextTick(()=>{
Indicator.close();
this.initScroll;
})
也不能写在mounted里面
滚动条调整
scrollwrapper 要是对的,460
里面的内容要高出wrapper内容
下拉显示和隐藏
json server分页start
_start=0&_limit=
vue inspect > output.js 看源码
nextTick
vue.$nextTick
再nextTick里面,同步的操作执行完了,才执行next%Tick这个异步的钩子函数
将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新。它跟全局方法 Vue.nextTick 一样,不同的是回调的 this 自动绑定到调用它的实例上。
mounted里面不能保证数据请求
滚动条初始化,需要DOM渲染完成
水平方向
initScroll(){
this.srollX = new BScroll(this.$refs["scrollx],{
scrollX:true,
probeType:3
})
}
vue-cli选项配置 可以查看配置项
多个页面,在pages里面配置两个index,chunk指定当前页面
title:当前title
fill 改变svg颜色
g{
fill{
color:red;
}
}
访问json静态文件
放在public下面
面试 better-scroll 底层实现:
transform:tanslate实现的
事件pointer-events
VUE动画 封装了一个transition组件
keep-alive 面试:vue项目做什么优化? keep-alive做缓存,不想做状态u缓存,向左请求
两个钩子函数,可以在这里面发请求等操作
activated() 进入某一模块
deactivated() 离开某一模块
项目
https://m.kaola.com/
选一个功能做深
1 keep-alive状态管理
2 transition动画
3 better-scroll滚动
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2019-09-18 面试题,经验