第125天 说说你对Web App 、Hybrid App和Native App这三者的理解?
Activity
diwayou commentedon Aug 19, 2019
不好的风气,天天看这种面试题不如多看看书,写写代码,培养下自己系统化思考问题的思维,分享这种东西我个人认为价值不大,天天排行就各种面试刷题,国外开发者吐槽的没问题,我也想吐槽
haizhilin2013 commentedon Aug 19, 2019
@diwayou 个人理解不同吧,你压根就没有理解这个项目的宗旨是什么!出这些知识点是让大家每天都保持学习与思考,深入思考,而不是简单地走下过场,片面地理解一下,去背题!
这些题你可以理解为面试题,你也可以理解为一个知识点,那说说看你对这道题的理解,看你是真懂还是假懂!没有说看这些题就不用看书了,书当然是要看的,书上的不也是一个个知识点合并起来的吗?
看书学习是个被动学习的过程,带着问题去学习是个主动学习的过程,相辅相成!有的时期我们需要被动学习,有的时期我们需要主动学习!
看待问题,有的时候还真的要从反方面来看,你觉得这些问题提出来,真的是想要答案吗?那有正确标准的答案吗?孰不知这些问题,百度一下分分钟出结果呢?学习它是一个过程,一个求知的过程!
四大宗旨:勤思考,多动手,善总结,能坚持
每个事物存在必有它的道理,“PHP比GO还好不是吗?”,“apache比nginx还棒不是吗?”,少点吐槽快乐会多一点!
对了,怎么国外开发者就是对的吗?他们有了解中国吗?想想吧……
TUARAN commentedon Aug 19, 2019
各取所需,因地制宜,排行也是由市场决定...
weilaiqishi commentedon Aug 19, 2019
来源https://zhuanlan.zhihu.com/p/54624442
Native App:原生应用,在android端通常使用Java或Kotlin开发,ios端使用OC或者Swift开发
Hybrid App:混合应用,结合Web与Native技术开发
Web App:web应用,网页三剑客html+css+js
Native App开发依旧是移动应用的主导,但如今的Native App或多或少会嵌入一些web页面,诸如淘宝、京东等APP。Hybrid App受到越来越多开发者的追捧与其开发周期短,开发难度小,跨平台离不开,当然APP的效果也成为大家诟病的话题,如首屏打开缓慢,动画效果不够流畅等。
要学习的方向
1.webview
2.移动APP适配与flexible.js
flexible是淘宝使用的移动端适配方案,原理即根据机型分辨率进行适配,设置根font-size,使用相对单位rem。其核心功能如下:
判断meta标签,动态改写标签
给html标签添加data-dpr属性
给html标签添加font-size属性
根font-size(即html标签上的)属性值即为一个单位的rem,在chrome浏览器上,默认的font-size值为16px:即16px=1rem
getComputedStyle(document.getElementsByTagName("html")[0])["font-size"];
//16px
flexible.js核心代码:
function refreshRem(){
var width = docEl.getBoundingClientRect().width;
if (width / dpr > 540) {
width = 540 * dpr;
}
var rem = width / 10;
docEl.style.fontSize = rem + 'px';
docEl.setAttribute("font-size",rem + 'px');
flexible.rem = win.rem = rem;
}
win.addEventListener('resize', function() {
clearTimeout(tid);
tid = setTimeout(refreshRem, 200);
}, false);
win.addEventListener('pageshow', function(e) {
if (e.persisted) {
clearTimeout(tid);
tid = setTimeout(refreshRem, 200);
}
}, false);
将设备宽度分为10份,而每一份视作一个单位,再将html的font-size设置为这个单位即:
font-size = 750/10 = 75px;
1rem = 75px;
如果在宽度为750px的设备上,完全符合上述换算。如果在iphone6/7/8上,宽度为375,那么:
font-size = 375/10 = 37.5px;
1rem = 37.5px;
现在以宽为750的设计稿为例,有一个款750px高75px的按钮 ;在iphone6/7/8上(实际宽375px)我们实际看到的宽高是多少呢?
width = 750/75 = 10rem ---> 10rem(在iphone6/7/8上) = 37.5px*10 = 375px;
height = 75/75 = 1rem --->1rem(在iphone6/7/8上) = 37.5px;
不难看出,只需要将这个单位作为除数即可计算出所需要的值;
3.打包工具cordova
leihuanlinbingqi commentedon Aug 19, 2019
@diwayou 我是菜鸟,你是大佬,我想问下,想想当初你不也是一样从菜鸟过来的吗?
diwayou commentedon Aug 19, 2019
首先,我没有说外国开发者肯定就是对的,不要偷换概念,我 只是正好跟他站在了同一个观点而已,请不要以点带面,混淆问题核心
第二:理解或者不理解你这个问题不会因为你出了这道题有太大的改变,因为真正理解一个问题需要一个系统化的学习,就拿这道题来说,他首先要去每一个都用一用看看文档/看看书/写写代码才能有自己的理解吧?而且这也不是一天两天就能改变的吧?你可能说这道题作为一个出发点,带着问题去思考,那是不是知识点不是一种很好的方式呢?用推荐书单可能是更好的方式,或者推荐更好的代码实践项目也是一种好的方式,而不是碎片化的知识点,效率过于低下,而且容易陷入只是知道知识点而不知道如何解决问题的系统化思维
我知道你的出发点是好,你的目标也是好的,但是从实践效果来说,你这种方式不是一个好的方式,对于初中级开发者来说是,对于高级开发者可能不是很需要,个人观点,打扰
haizhilin2013 commentedon Aug 19, 2019
@diwayou 明白你说的!没有最好的,只有最适合的!感谢!^_^
leihuanlinbingqi commentedon Aug 19, 2019
赞同,书也会分为不同的等级,适合才是最好的。
nextprops commentedon Aug 19, 2019
@haizhilin2013 第一天看到这个项目,我在想你能坚持做一件事情100+天,你真的很厉害。而且我相信你也帮助到了一些人。在这里,为你点赞。👍
另外有些朋友他们的逻辑会很奇怪,一上来就通过先否定,说点是个人都知道的“应该如何如何”的话,然后体现一波自己优势。希望你放宽心态,以后这种你能不回就不回吧。 一段名言送给你,有一些删减,但大概意思差不多。
“你说是我辣鸡,那就是我辣鸡,为什么你们知道吗,因为你的的话就像是一位癌症晚期患者说的话。他都已经这样了,你为什么不顺从他,你总得给人留一段美好的回忆吧,最后的时光里。” --引自《吉吉圣经》。
haizhilin2013 commentedon Aug 19, 2019
@hedongxiaoshimei 感谢分享!
EragonBubble commentedon Aug 19, 2019
戒骄戒躁
json-he commentedon Aug 19, 2019
支持作者,是个很好的分享。
fyouf commentedon Aug 21, 2019
系统也是由许许多多碎片化知识组成,可能你并不需要这些,但总有人能从中受益,学习方式很多种,应该持开放态度。作为程序员经常会进入一种自己不知道自己不知道的盲区,看一些碎片化的知识有时是可以帮助到自己填补一些知识盲点。这种更像是一种学习上的辅助。
diwayou commentedon Aug 21, 2019
本来不想说了,你第一句话就是废话,而且是错误的废话,如果按照你这么说所有知识都能组成系统,我说的是不利于系统化思维,不知道自己不知道,就你知道!
rainysir commentedon Aug 21, 2019
支持作者,无论有用没用,感谢分享。
monic-shixi commentedon Aug 21, 2019
看书学习不能算被动吧。。。。:cry:
haizhilin2013 commentedon Aug 21, 2019
@monic-shixi 嘿,我说的这块也是不严谨,应该是看书这件事本身是主动的,但里面的内容是被动吸引的(因为是由作者告诉你答案),感谢指出!
aoxiangsky commentedon Oct 22, 2019
哪样拿高薪才是硬道理,其他都瞎扯淡
LeiDeMing commentedon Apr 1, 2021
本质上,系统的看了书,再来看这个项目会更加的好。