weex是阿里2016年開源的一套跨移動端(Andriod/IOS/Wap)的前端框架,採用VUE,較React Native入門相對簡單
官網地址html
略過,默認安裝了
注意:nodejs的版本須大於4.5.0前端
我使用的是WebStrom
webpack和serve的依賴包須要安裝node
<template> <scroller> <text>用戶名:</text> <input id="top" type="text" autofocus="true" placeholder="請輸入用戶名" value="{{username}}" oninput="usernameoninput" style="margin-top: 200px;margin-left: 200px;font-size:32px;"> </input> <text>密碼:</text> <input type="password" autofocus="true" placeholder="請輸入密碼" value="{{password}}" oninput="passwordoninput" style="margin-top: 200px;margin-left: 200px;font-size:32px;"> </input> <input type="success" value="登陸" onclick="login" style="margin-top: 200px;margin-left: 200px;"> </input> </scroller> </template> <style> </style> <script> var common = require('./lib/common.js'); module.exports = { data: { root:"dist", username:"", password:"" }, ready: function () { }, methods:{ login:function(e){ var storage = require('@weex-module/storage'); var self = this; var bundleUrl = this.$getConfig().bundleUrl; var url = common.getUrl(bundleUrl,'mainindex.lib','dist'); storage.setItem('username', self.username, function(e) { self.$openURL(url) }); }, usernameoninput:function(e){ this.username = e.value; }, passwordoninput:function(e){ this.password = e.value; } } } </script>
var storage = require('@weex-module/storage');//引入存儲 storage.setItem('username', self.username, function(e) {//將用戶名存進客戶端,對應的key是usernam }); var storage = require('@weex-module/storage'); var self = this; storage.getItem("username",function(e){//讀取數據 self.headinfo = e.data; });
var stream = require('@weex-module/stream'); stream.fetch({ method: 'GET', url: "http://192.168.169.124:3000/testhttpget.do", type:'json' }, function(response) { self.body = response.data.info; },function(response){ });
其餘內置組件使用,請參看APIandroid
<template> <div class="headclass"> <text>{{headinfo}}</text> </div> </template> <script> module.exports = { data:{ headinfo:"welcome to this" }, ready:function(){ var storage = require('@weex-module/storage'); var self = this; storage.getItem("username",function(e){ self.headinfo = e.data; }); } } </script> <style> .headclass{ margin-top: 200px; } </style>
<script> require('./components/headdiv.we') module.exports = { data:{ } } </script>
<template> <div class="bg"> <headdiv></headdiv> </div> </template>
var getUrl = function(bundleUrl,fileName,dir,host){ var nativeBase; var isAndroidAssets = bundleUrl.indexOf('file://assets/') >= 0; var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0; if (isAndroidAssets) { nativeBase = 'file://assets/'; } else if (isiOSAssets) { nativeBase = bundleUrl.substring(0, bundleUrl.lastIndexOf('/') + 1); } else { host = host||'localhost:8080'; var matches = /\/\/([^\/]+?)\//.exec(bundleUrl); if (matches && matches.length >= 2) { host = matches[1]; } nativeBase = 'http://' + host + '/' + dir + '/'; } var h5Base = './index.html?page=./' + dir + '/'; // in Native var base = nativeBase; if (typeof window === 'object') { base = h5Base; } return base+fileName; }
var common = require('./lib/common.js');
require('webpack') require('weex-loader') var path = require('path') module.exports = { entry: {//主we頁面 main: path.join(__dirname, 'src', 'main.we?entry=true') }, output: { path: 'dist', filename: '[name].lib' }, module: { loaders: [ { test: /\.we(\?[^?]+)?$/, loaders: ['weex-loader'] }, { test: /\.js$/, loaders: ['weex-loader'] //將js文件打包 } ] }}
self.$openURL(url)
需要注意Android和iOS的跳轉,要提早定義好相關協議webpack
建立Android 工程
apply plugin: 'com.android.application' android { compileSdkVersion 24 buildToolsVersion "25.0.0" defaultConfig { applicationId "demo.android.weex.tomsnail.cn.weexandroiddemo" minSdkVersion 21 targetSdkVersion 24 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.android.support:design:24.2.1' compile 'com.taobao.android:dexposed:0.1.8' compile 'com.loopj.android:android-async-http:1.4.9@aar' compile 'com.facebook.fresco:fresco:0.12.0+' compile 'com.facebook.fresco:animated-gif:0.12.0' compile 'com.squareup.okhttp:okhttp:2.3.0' compile 'com.squareup.okhttp:okhttp-ws:2.3.0' compile 'com.squareup.okio:okio:1.0.1' compile 'com.alibaba:fastjson:1.1.46.android' compile 'com.android.support:support-annotations:23.2.1' compile 'com.jakewharton.scalpel:scalpel:1.1.2' compile 'com.squareup.picasso:picasso:2.5.2' //compile 'com.google.android.gms:play-services-appindexing:8.1.0' compile 'com.taobao.android:weex_inspector:0.0.8.1' compile project(':weex_sdk') testCompile 'junit:junit:4.12' compile 'com.google.android.gms:play-services-appindexing:8.4.0' }
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="demo.android.weex.tomsnail.cn.weexandroiddemo"> <!-- To auto-complete the email text field in the login form with the user's emails --> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.READ_PROFILE" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"> </uses-permission> <application android:name=".WXApplication" android:allowBackup="false" android:icon="@mipmap/ic_launcher" android:label="weexandroiddemo" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Main1Activity"> </activity> <!-- ATTENTION: This was auto-generated to add Google Play services to your project for App Indexing. See https://g.co/AppIndexing/AndroidStudio for more information. --> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> </application> </manifest>
在src下新建assets文件夾,將weex生成的dist下的文件放入以便加載 WXFileUtils.loadAsset(path, context)
鏈接設備運行app,建議使用真機,使用模擬機佔用電腦資源較多
相關代碼在整理後近期放在github上git