Weex环境搭建(weexpack篇)

一、安装node.js

点击链接 http://nodejs.cn/download/ 选择你需要安装的版本(windows ,mac,linux 3种系统的版本),下载你需要的版本


点击安装包,下一步,下一步,安装完成即可。
执行查看node版本号

node -v

显示当前node版本号

deiMac:~ li$ node -v
v8.1.0

使用淘宝NPM源

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

二、安装webpack

//全局安装
$ cnpm install -g webpack

或者

//安装到你的项目目录
$ cd 你的工程目录
$ cnpm install --save-dev webpack

三、安装serve

//全局安装
$ cnpm install -g serve

或者

//安装到你的项目目录
$ cd 你的工程目录
$ cnpm install  serve

四、安装weexpack

首先,全局安装 weex-pack 命令:

$ cnpm install -g weexpack

或者 在 clone 的 weexpack 根目录下执行

$ cnpm install
  1. 创建 weexpack 工程
$ weexpack create appName

使用WebStrom打开创建的工程目录如下



2.进入创建的工程目录,并且安装相关依赖

$ cd appName && cnpm install

安装完第三方依赖,工程目录添加了node_modules目录


weex-toolkit和weexpack的区别

weex-toolkit 初始化的项目是针对开发单个 Weex 页面而设计的,也就是说这样的项目只包括单个页面开发需要的东西,比如前端页面源文件、webpack 配置、npm 脚本等。项目产生的输出就是一个 JS Bundle 文件,可以自由的进行部署。
weex-pack 是初始化一个完整的 App 工程,包括 Android 和 iOS 的整个 App 起步,前端页面只是其中的一部分。这样的项目最终产出是一个 Android App 和一个 iOS App。

五、创建.babelrc文件

将ES6转成ES5代码执行

{ "presets": ["es2015"] }

六、创建.gitignore文件

配置git不上传的文件和文件夹

# Weex
## idea && node_modules
.idea/
node_modules/
temp/
## output files
dist/

七、在工程根目录下创建index.html文件

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Weex Preview</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="apple-touch-fullscreen" content="yes">
  <meta name="format-detection" content="telephone=no, email=no">
  <link rel="stylesheet" href="./web/assets/style.css">
  <script src="./web/assets/url.js"></script>
  <script src="./web/assets/qrcode.js"></script>
  <script src="./node_modules/vue/dist/vue.js"></script>
</head>
<body>
  <h1>Weex Preview</h1>
  <div id="app"></div>
  <template id="app-template">
    <div id="app">
      <div class="mock-phone">
        <div class="inner">
          <iframe id="preview" src="./weex.html"></iframe>
        </div>
        <div class="camera"></div>
        <div class="earpiece"></div>
        <div class="home-btn"></div>
      </div>
      <div id="qrcode">
        <h2>QRCode</h2>
        <a :href="val" target="_blank"><canvas ref="canvas" width="200" height="200"></canvas></a>
        <p class="bundle-url"><a :href="val" target="_blank">{{val}}</a></p>
      </div>
    </div>
  </template>
  <script>
    console.log('QR CODE URL: ' + url)
    new Vue({
      el: '#app',
      template: '#app-template',
      data: { val: url },
      mounted: function () {
        var qrcodedraw = new QRCodeLib.QRCodeDraw()
        qrcodedraw.draw(this.$refs.canvas, this.val, function () {})
      }
    })
  </script>
</body>
</html>

八、在工程目录下创建weex.html文件

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>weex-vue-demo</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="apple-touch-fullscreen" content="yes">
  <meta name="format-detection" content="telephone=no, email=no">
  <style>body::before { content: "1"; height: 1px; overflow: hidden; color: transparent; display: block; }</style>
  <script src="./assets/phantom-limb.js"></script>
  <script src="./node_modules/vue/dist/vue.runtime.js"></script>
  <script src="./node_modules/weex-vue-render/dist/index.js"></script>
</head>
<body>
  <div id="root"></div>
  <script src="./dist/web/index.web.js"></script>
</body>
</html>

最终的工程目录


九、修改web/assets/url.js文件

修改前

var protocol = location.protocol + '//';
var hostname = typeof CURRENT_IP === 'string' ? window.CURRENT_IP : location.hostname;
var port = location.port ? ':' + location.port : '';
var url = protocol + hostname + port + location.pathname.replace(/\/web\/index\.html$/, '/').replace(/\/$/, '/dist/app.weex.js');

修改后

var protocol = location.protocol + '//';
var hostname = typeof CURRENT_IP === 'string' ? window.CURRENT_IP : location.hostname;
var port = location.port ? ':' + location.port : '';
var url = protocol + hostname + port + location.pathname.replace(/\/index\.html$/, '/').replace(/\/$/, '/dist/native/index.js')

十、修改package.json文件

修改"dev"配置前

 "scripts": {
        "build": "webpack",
        "build_plugin": "webpack --config ./tools/webpack.config.plugin.js --color",
        "dev": "weex-builder src dist -w",
        "serve": "webpack-dev-server --config webpack.dev.js -p --open"
    }

修改"dev"配置后

"scripts": {
    "build": "webpack",
    "build_plugin": "webpack --config ./tools/webpack.config.plugin.js --color",
    "dev": "webpack --watch & serve -p 12590",
    "serve": "webpack-dev-server --config webpack.dev.js -p --open"
  }

十一、修改webpack.config.js文件
将webConfig打包到dist/web文件夹下

 output: {
    path: pathTo.join(__dirname, 'dist', 'web'),
    filename: '[name].web.js',
  }

将weexConfig打包到dist/native文件夹下

 output: {
    path: pathTo.join(__dirname, 'dist', 'native'),
    filename: '[name].js',
  }

十二、运行打包测试

cnpm run dev

打开浏览器 http://xxx.xxx.xxx.xxx:12590


appstore下载 weex playground 点击左上角扫码功能,扫网站上的二维码


现在可以开始coding调试啦

项目工程链接:https://git.oschina.net/lyjappleclub/myweex.git

进入工程目录下载第三方依赖

cnpm install

开启调试

cnpm run dev
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容