前言

最近有一些人反馈说在面试过程中常常被问到weex相关的知识,也侧面反映的weex的发展还是很可观的,可是目前weex的开发者大多数是中小型公司或者个人,大公司屈指可数,揪其原因可能是基于weex的开发正确的姿势大家并没有找到,而且市面上的好多轮子还是.we后缀的,众所周知,weex和vue一直在努力的进行生态互通,而且weex实现web标准化是早晚的问题,今天和大家分享一下weex基于vue2.0的开发框架模板~
工作原理
先简单熟悉一下weex的工作原理,这里引用一下weex官网上的一直图片,详细信息见官网
开发环境搭建
weex 开发环境搭建
关于weex开发环境搭建问题见官方文档
android 、iOS 开发环境
关于native开发环境搭建问题见官方文档
框架说明
基于vue2.0搭建
像前面说的那样weex和vue一直在努力的进行生态互通,而且weex实现web标准化是早晚的问题,所以也建议开发者不要在用.we做后缀来开发了
多页模式(抛弃vue-router)
单页形态对于原生可能体验不够好,目前在 native App 里单页模式不太合适
集成三端(android、ios、h5平台)
关于android、ios、h5平台的集成与打包问题,在项目中都以解决~
集成eslint代码检查
代码检查是必要的操作,为了能够拥有vue开发的体验,将eslint集成进来~
注:
由于weexpack暂不支持vue问题,打包相关后续会集成进来~
框架介绍
package.json依赖
"dependencies": {
"vue": "^2.1.8",
"vue-router": "^2.1.1",
"vuex": "^2.1.1",
"vuex-router-sync": "^4.0.1",
"weex-vue-render": "^0.1.4"
},
"devDependencies": {
"babel-core": "^6.20.0",
"babel-eslint": "^7.1.1",
"babel-loader": "^6.2.9",
"babel-preset-es2015": "^6.18.0",
"css-loader": "^0.26.1",
"eslint": "^3.15.0",
"eslint-config-standard": "^6.2.1",
"eslint-loader": "^1.6.1",
"eslint-plugin-html": "^2.0.1",
"eslint-plugin-promise": "^3.4.2",
"eslint-plugin-standard": "^2.0.1",
"postcss-cssnext": "^2.9.0",
"serve": "^1.4.0",
"vue-loader": "^10.0.2",
"vue-template-compiler": "^2.1.8",
"webpack": "^1.14.0",
"weex-devtool": "^0.2.64",
"weex-loader": "^0.4.1",
"weex-vue-loader": "^0.2.5"
}
打包配置
1、 遍历.vue文件后缀,生成相应的entry.js文件
function getEntryFileContent (entryPath, vueFilePath) {
const relativePath = path.relative(path.join(entryPath, '../'), vueFilePath);
return 'var App = require(\'' + relativePath + '\')\n'
+ 'App.el = \'#root\'\n'
+ 'new Vue(App)\n'
}
function walk (dir) {
dir = dir || '.'
let directory = path.join(__dirname, './src', dir)
let entryDirectory = path.join(__dirname, './src/entry');
fs.readdirSync(directory)
.forEach(file => {
let fullpath = path.join(directory, file)
let stat = fs.statSync(fullpath)
let extname = path.extname(fullpath)
if (stat.isFile() && extname === '.vue') {
let entryFile = path.join(entryDirectory, dir, path.basename(file, extname) + '.js')
fs.outputFileSync(entryFile, getEntryFileContent(entryFile, fullpath))
let name = path.join(dir, path.basename(file, extname))
entry[name] = entryFile + '?entry=true'
} else if (stat.isDirectory()) {
let subdir = path.join(dir, file)
walk(subdir)
}
})
}
walk()
2、通过weex-loader打包生成native jsbundle
3、 通过weex-vue-loader打包生成web jsbundle
function getBaseConfig () {
return {
entry: entry,
output: {
path: 'dist'
},
resolve: {
extensions: ['', '.js', '.vue'],
fallback: [path.join(__dirname, './node_modules')],
alias: {
'assets': path.resolve(__dirname, './src/assets/'),
'components': path.resolve(__dirname, './src/components/'),
'constants': path.resolve(__dirname, './src/constants/'),
'api': path.resolve(__dirname, './src/api/'),
'router': path.resolve(__dirname, './src/router/'),
'store': path.resolve(__dirname, './src/store/'),
'views': path.resolve(__dirname, './src/views/'),
'config': path.resolve(__dirname, './config'),
'utils': path.resolve(__dirname, './src/utils/')
}
},
module: {
preLoaders: [
{
test: /\.vue$/,
loader: 'eslint',
exclude: /node_modules/
},
{
test: /\.js$/,
loader: 'eslint',
exclude: /node_modules/
}
],
loaders: [
{
test: /\.js$/,
loader: 'babel',
exclude: /node_modules/
}, {
test: /\.vue(\?[^?]+)?$/,
loaders: []
}
]
},
vue: {
postcss: [cssnext({
features: {
autoprefixer: false
}
})]
},
plugins: [bannerPlugin]
}
}
const webConfig = getBaseConfig()
webConfig.output.filename = 'web/[name].js'
webConfig.module.loaders[1].loaders.push('vue')
const weexConfig = getBaseConfig()
weexConfig.output.filename = 'weex/[name].js'
weexConfig.module.loaders[1].loaders.push('weex')
项目结构
weex-frame
├── android (android项目)
│
├── ios (ios项目代码)
│
├── src (weex模块)
│ ├── api (api模块)
│ ├── components(组件模块)
│ ├── constants(常量配置)
│ ├── utils (工具模块)
│ └── views(视图模块)
│
└── dist (build输出模块)
├── weex (native使用jsbundle)
└── web(web使用jsbundle)
项目启动
android 启动
iOS 启动
h5 启动方式
打开 http://localhost:12580/weex.html
项目示例
android 端示例
iOS 端示例
结语
能看的出来上方的三端示例表现还是很一致的,本篇博文也是想给大家提供一个轮子,也欢迎大家多多提意见,共同促进weex生态成熟~
框架项目地址:weex-frame_jb51.rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vue.js
# 框架搭建
# vue框架搭建
# Weex
# Vue模板搭建
# windows下vue.js开发环境搭建教程
# vue.js从安装到搭建过程详解
# 超简单的Vue.js环境搭建教程
# Vue.js开发环境快速搭建教程
# 详解Vue.js入门环境搭建
# Vue.js系列之项目搭建(1)
# Vue.js开发环境搭建
# 基于Vue2的移动端开发环境搭建详解
# vue2.0实战之使用vue-cli搭建项目(2)
# 官网
# 工作原理
# 早晚
# 大家多多
# 文档
# 不太
# 遍历
# 请先
# 屈指可数
# 能看
# 提供一个
# 都以
# 大家分享
# 问到
# 大公司
# 众所周知
# 暂不
# 提意见
# 想给
# 过程中
相关文章:
如何做网站制作流程,*游戏网站怎么搭建?
建站之星如何快速更换网站模板?
建站之星Pro快速搭建教程:模板选择与功能配置指南
建站主机与服务器功能差异如何区分?
jQuery 常见小例汇总
如何打造高效商业网站?建站目的决定转化率
Swift中swift中的switch 语句
h5在线制作网站电脑版下载,h5网页制作软件?
招贴海报怎么做,什么是海报招贴?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
如何通过云梦建站系统实现SEO快速优化?
制作旅游网站html,怎样注册旅游网站?
建站之星代理如何优化在线客服效率?
制作网站的基本流程,设计网站的软件是什么?
专业网站建设制作报价,网页设计制作要考什么证?
高防服务器如何保障网站安全无虞?
Python多线程使用规范_线程安全解析【教程】
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
动图在线制作网站有哪些,滑动动图图集怎么做?
建站之星免费模板:自助建站系统与智能响应式一键生成
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
网站制作壁纸教程视频,电脑壁纸网站?
已有域名和空间如何快速搭建网站?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
如何确保FTP站点访问权限与数据传输安全?
如何快速查询网站的真实建站时间?
如何通过老薛主机一键快速建站?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
深圳网站制作案例,网页的相关名词有哪些?
如何基于云服务器快速搭建网站及云盘系统?
建站之星如何优化SEO以实现高效排名?
如何高效完成自助建站业务培训?
如何通过商城自助建站源码实现零基础高效建站?
内部网站制作流程,如何建立公司内部网站?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
如何快速搭建安全的FTP站点?
如何在建站宝盒中设置产品搜索功能?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
如何在腾讯云服务器上快速搭建个人网站?
建站之星收费标准详解:套餐费用及年费价格表一览
再谈Python中的字符串与字符编码(推荐)
如何在腾讯云免费申请建站?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
如何选择CMS系统实现快速建站与SEO优化?
广德云建站网站建设方案与建站流程优化指南
家具网站制作软件,家具厂怎么跑业务?
自助网站制作软件,个人如何自助建网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。