全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Weex基于Vue2.0开发模板搭建

前言

最近有一些人反馈说在面试过程中常常被问到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) 

项目启动

  1. git clone git@github.com:osmartian/weex-frame.git
  2. cd weex-frame
  3. npm install
  4. 执行 ./start

android 启动

  1. 打开andorid studio
  2. File -> New -> Import Project -> weex-frame/android -> 启动

iOS 启动

  1. cd ios
  2. pod install (未安装pod,请先安装)
  3. open WeexFrame.xcworkspace

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)  # 官网  # 工作原理  # 早晚  # 大家多多  # 文档  # 不太  # 遍历  # 请先  # 屈指可数  # 能看  # 提供一个  # 都以  # 大家分享  # 问到  # 大公司  # 众所周知  # 暂不  # 提意见  # 想给  # 过程中 


相关文章: 完全自定义免费建站平台:主题模板在线生成一站式服务  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  建站之星客服服务时间及联系方式如何?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  建站VPS能否同时实现高效与安全翻墙?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  魔方云NAT建站如何实现端口转发?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  中山网站推广排名,中山信息港登录入口?  香港服务器租用每月最低只需15元?  再谈Python中的字符串与字符编码(推荐)  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  南宁网站建设制作定制,南宁网站建设可以定制吗?  如何生成腾讯云建站专用兑换码?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  零服务器AI建站解决方案:快速部署与云端平台低成本实践  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  建站之星免费版是否永久可用?  公司网站的制作公司,企业网站制作基本流程有哪些?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  定制建站流程解析:需求评估与SEO优化功能开发指南  建站之星代理如何优化在线客服效率?  如何快速搭建二级域名独立网站?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  建站主机空间推荐 高性价比配置与快速部署方案解析  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  建站之星2.7模板:企业网站建设与h5定制设计专题  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  大同网页,大同瑞慈医院官网?  如何通过云梦建站系统实现SEO快速优化?  网站企业制作流程,用什么语言做企业网站比较好?  如何快速搭建响应式可视化网站?  c# 服务器GC和工作站GC的区别和设置  如何选择服务器才能高效搭建专属网站?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  网站制作报价单模板图片,小松挖机官方网站报价?  已有域名如何快速搭建专属网站?  建站主机SSH密钥生成步骤及常见问题解答?  平台云上自主建站:模板化设计与智能工具打造高效网站  宝塔新建站点为何无法访问?如何排查?  建站org新手必看:2024最新搭建流程与模板选择技巧  存储型VPS适合搭建中小型网站吗?  官网网站制作腾讯审核要多久,联想路由器newifi官网  ,网页ppt怎么弄成自己的ppt?  如何在Golang中使用replace替换模块_指定本地或远程路径 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。