发布时间:2025-12-09 11:43:55 浏览次数:1
"devDependencies": { "axios": "^0.17", "bootstrap-sass": "^3.3.7", "browser-sync": "^2.26.7", "browser-sync-webpack-plugin": "^2.2.2", "cross-env": "^5.1", "jquery": "^3.2", "laravel-elixir-livereload": "^1.1.6", "laravel-elixir-vue-2": "^0.3.0", "laravel-elixir-webpack-official": "^1.0.10", "laravel-mix": "^1.0", "lodash": "^4.17.4", "node-sass": "^4.7.2", "vue": "^2.5.7" }, "dependencies": { "css-loader": "^0.28.9", "gulp": "^3.9.1", "iview": "^2.9.2", "js-cookie": "^2.2.0", "laravel-elixir": "^6.0.0-18", "laravel-elixir-compress": "^1.0.2", "less": "^3.0.0", "less-loader": "^4.0.5", "particles.js": "^2.0.0", "vue-i18n": "^7.4.2", "vue-router": "^3.0.1", "vuex": "^3.1.2" }const elixir = require('laravel-elixir');require('laravel-elixir-webpack-official');require('laravel-elixir-vue-2')elixir((mix) => { mix.sass('app.scss') .webpack('app.js');});let mix = require('laravel-mix');mix.js('resources/assets/js/app.js', 'public/js') .sass('resources/assets/sass/app.scss', 'public/css');mix.browserSync({ proxy: 'localhost:8000'});resources/assets/js文件夹下创建page文件+api.js+app.js+routes.js
require('./bootstrap');window.Vue = require('vue');import VueRouter from 'vue-router';Vue.use(VueRouter);import store from './store/'; // vuex 数据存储所需对象import routes from './routes'; // 路由配置文件// 实例化路由const router = new VueRouter({ routes})var vm = new Vue({ store, router}).$mount('#app');export default[ { path: '', redirect: '/index' }, { path: '/index', component: require('./page/App.vue') }, { path: '/list', component: require('./page/List.vue') }, { path: '/detail/:id', component: require('./page/Detail.vue') }];a
php artisan servenpm run watchError: Can't resolve 'vue-route' in
cnpm install --save vue-routeError: Can't resolve 'vuex' in
cnpm install --save vuexcnpm i element-ui -Scnpm i vant -Snpm i babel-plugin-import -D"plugins": [ "transform-vue-jsx", "transform-runtime", ["import", [{ "libraryName": "vant", "style": true }]] ],<script>
import { Loading } from 'vant'
export default {
components: {
[Loading.name]: Loading
}
}
</script>
px单位转化为rem,借助postcss-pxtorem插件
cnpm install autoprefixer postcss-pxtorem --save-devvue.config.js文件
const autoprefixer = require('autoprefixer')const pxtorem = require('postcss-pxtorem')module.exports = { css: { loaderOptions: { postcss: { plugins: [ autoprefixer(), pxtorem({ rootValue: 37.5, propList: ['*'], // 该项仅在使用 Circle 组件时需要 // 原因参见 https://github.com/youzan/vant/issues/1948 selectorBlackList: ['van-circle__layer'] }) ] } } }}rem适配
rem适配文档上建议使用lib-flexible,flexible适配的原理是物理像素与逻辑像素的相互转化:物理像素px = window.screen.width(逻辑像素pt) * window.devicePixelRatio
cnpm i -S amfe-flexibleapp.js引入
import 'amfe-flexible'项目中使用
宽度为750px的设计图,由于rootValue: 37.5为基准,在写css时候设计图上文字大小多少像素就写多少像素即可
cnpm install axios --save
在webpack.mix.js中添加
mix.js('resources/assets/js/app.js', 'public/js') .postCss('resources/assets/css/app.css', 'public/css') .options({ postCss: [ require('postcss-px-to-viewport') ]});npm run watch会报错缺少插件,类似这种安装
cnpm install postcss-viewport-units --save-devcnpm install --save-dev webpack-bundle-analyzerwebpack.mix.js中mix.webpackConfig({ plugins: [ new BundleAnalyzerPlugin(), ],}).js('resources/assets/js/app.js', 'public/js') .sass('resources/assets/sass/app.scss', 'public/css');运行
npm run dev