Weex原理之带你去蹲坑,2024最新Android笔经

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如上图,参考entry.js文件,创建一个SecondPageEntry.js,作为SecondPage.vue的入口,用于webpack生成SecondPage.js页面。

什么?webpack没听说过怎么办,No problem,你只需简单的修改,一知半解完全可以胜任。如下图,我们主要需要修改webpack.common.conf.js文件,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以看出,webpack.common.conf.js中,其实是区分了webConfig和weexConfig的不同打包方式。如下图,其中weexEntry就是我们需要修改的地方,可以看到本来已经有index和entry.js存在了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后我们需要通过navigator来实现跳转,我们需要知道,要跳转的js文件在哪里,如下代码演示,如何实现navigotor的native跳转,完整兼容三端跳转请移步demo项目。

//获取当前js文件所在完整路径
let bundleUrl = this.$getConfig().bundleUrl;
bundleUrl = String(bundleUrl);
let nativeBase;
//android一般位于file://assets目录下
let isAndroidAssets = bundleUrl.indexOf(‘file://assets/’) >= 0;
//ios一般位于一般带有file开头,带有WeexDemo.app
let isiOSAssets = bundleUrl.indexOf(‘file:///’) >= 0 && bundleUrl.indexOf(‘WeexDemo.app’) > 0;
if (isAndroidAssets) {
nativeBase = ‘file://assets/dist/’;
} else if (isiOSAssets) {
nativeBase = bundleUrl.substring(0, bundleUrl.lastIndexOf(‘/’) + 1);
} else {
let host = ‘localhost:8080’;
let matches = ///([^/]+?)//.exec(bundleUrl);
if (matches && matches.length >= 2) {
host = matches[1];
}
nativeBase = ‘http://’ + host + ‘/index.html?page=./dist/’;
}
return nativeBase;

3、样式sass\scss

sass,后期必不可少的利器。

当你的weex项目不断变大,一些样式共享,公共颜色,大小尺寸等的管理,就是你需要面对的问题。

这时候sass和scss就可以起到很大的作用。最大优点是,它可编程,支持定义变量,而且不像阉割后的css一样,var()这种写法无法在native下得到支持,这时候sass的效果绝对让你回味无穷。

使用sass也十分简单,简单配置下webpack,sass的语法也十分容易上手,只需十分钟了解下就可以愉快的享用这块糖了。

  • 先安装sass依赖:

npm install node-sass;
npm install sass-loader; //依赖node-sass

  • 之后webpack.common.conf.js中配置loader,如下图,在两个module处,增加红框配置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 最后用 import 引入的sass文件进行加载,详细可查看demo工程。

//也可以 lang=“scss”

五、蹲坑

其实就是问题集锦,记录一些开发过程中遇到的问题,相信你会喜欢:

  • 1、关于vue的<scrpit>标签内,weex.requireModule(包括插件weex-ui)中,在全局获取返回null的原因,是因为entry.js中的router对象,不能用import 和 export default,只能用require 和 module.exports 配合。

  • 2、es6一些语法问题,如async和await,可以用"babel-plugin-transform-runtime",在.babelrc中设置。

{
“presets”: [
“es2015”,
“stage-0”
],
“plugins”: [ [
“transform-runtime”,
{
“helpers”: false,
“polyfill”: false,
“regenerator”: true,
“moduleName”: “babel-runtime”
}
]]
}

  • 3、export default 和require混合使用的时候,会多一个default对象,比如this.$store.default.state这样才对的问题。

  • 4、自定义的js文件类中,不能使用全局的weex.requireModule

  • 5、使用weex-ui的tabbar结合是,<list>必须有高度,或者overflow属性为scroll才能滑动,而且overflow的位置必须是不会影响其他页面位置。

  • 6、全屏默认height 1334 和 width 750,但是记得减去32大概高度的statusbar。

  • 7、list的loadmore,必须给list设置高度样式,才能在web中正常触发。

  • 8、text的</text>结束标签换行,在debug下可能会出现样式问题。

  • 9、生命周期在web中与android等不同,比如activated等。

  • 10、()=> {}对于this可能获取存在的不同,尽量用function(){}。

  • 11、多页即创建多个类似entry.js的入口文件,在webpack下配置weex的打开生成的js文件,用于navigator跳转,通过url传值。

  • 12、android多页面打开失败

android.os.FileUriExposedException问题:

在你的Application中添加:
if (Build.VERSION.SDK_INT>=18) {
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
builder.detectFileUriExposure();
}

ActivityNotFoundException问题:



  • 13、多页面生成js时,import的时候,需要指定.vue后缀的。

  • 14、如果是webstorm,记得对.temp dist node_modules platforms几个文件夹,右键设置excluded,避免一直indexing和硬盘资源消耗。

  • 15、@viewappear=“onappear” @viewdisappear =“ondisappear” 类似onPause和onResume

  • 16、ios实时看log,可以先增加

-(void)redirectConsoleLog{
#ifdef DEBUG
NSString *documentDir = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSLog(@“documentPath : %@”,documentDir);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

总结

**其实上面说了这么多,钱是永远赚不完的,在这个知识付费的时代,知识技能提升才是是根本!我作为一名8年的高级工程师,知识技能已经学习的差不多。**在看这篇文章的可能有刚刚入门,刚刚开始工作,或者大佬级人物。

像刚刚开始学Android开发小白想要快速提升自己,最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以这里分享一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。

这么重要的事情说三遍啦!点赞+点赞+点赞!

【Android高级架构师系统学习资料】高级架构师进阶必备——设计思想解读开源框架

第一章、热修复设计
第二章、插件化框架设计
第三章、组件化框架设计
第四章、图片加载框架
第五章、网络访问框架设计
第六章、RXJava 响应式编程框架设计
第七章、IOC 架构设计
第八章、Android 架构组件 Jetpack

roid高级架构师系统学习资料】高级架构师进阶必备——设计思想解读开源框架

第一章、热修复设计
第二章、插件化框架设计
第三章、组件化框架设计
第四章、图片加载框架
第五章、网络访问框架设计
第六章、RXJava 响应式编程框架设计
第七章、IOC 架构设计
第八章、Android 架构组件 Jetpack

[外链图片转存中…(img-9wCJK3px-1711806830768)]

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值