小程序的开发主要是应用到网页开发。其中网页开发主要是开发htm页面。html页面主要的开发技术会用到css,Javascript!所以,我一般建议初学者,如果做好小程序的开发,主要应该从两个方面入手,第一,先从html页面及html网页制作开始。掌握网页制作的基本要素如元素的添加,元素的修改。元素样式的定义。图片的修改定义等等。第二,要从JavaScript技术方面进行入手。重点了解JavaScript等主流的技术框架的方法,函数等。只有这样才能学好htm5的开发。从而把小程序的开发做好。小程序的开发具有先天性的优势,主要是因为他是新的htm5框架的技术。它对浏览器的兼容性,对系统的兼容性,都支持的非常好。另外对于程序来说,他的掌握程度也不高,很容易掌握。降低了学习的门槛,以及开发所占用的时间。
<blockquote><p>目前小程序已在前端占了一席之地,最近公司项目上用的就是小程序开发,由于功能及页面不是很多,所以直接原生开发,毕竟坑可能会少点,在开发过程中,小程序自带导航栏和客户的设计稿导航栏排在一起,感觉很别扭,因此要求去掉微信的自带导航栏,微信提供了这方面的api,接下来我们就实 *** 。</p></blockquote><div class="image-package"><img src=" https://upload-images.jianshu.io/upload_images/8877503-c85b39b2671d31b7.jpeg " img-data="{"format":"jpeg","size":14897,"height":141,"width":963}" class="uploaded-img" style="min-height:200pxmin-width:200px" width="auto" height="auto"/></div><p><span style="font-size:15px">这是小程序官方文档截图,可以看到导航栏样式支持两种,默认是带导航栏,另外一种是自定义导航栏-custom,如果使用自定义导航栏,我们可以</span></p><p><strong><span style="font-size:15px">全局配置</span></strong><span style="font-size:15px"/></p><span style="font-size:inherit">//app.json</span>
<span style="font-size:inherit">"window"</span>: {
<span style="font-size:inherit">"navigationStyle"</span>: <span style="font-size:inherit">"custom"</span>
}
<p><strong><span style="font-size:15px">单页面配置</span></strong></p><span style="font-size:inherit">//page.json</span>
{
<span style="font-size:inherit">"navigationStyle"</span>: <span style="font-size:inherit">"custom"</span>
}
<p><strong><span style="font-size:15px">效果对比</span></strong>
</p><div class="image-package"><img src=" https://upload-images.jianshu.io/upload_images/8877503-1d120c002c6ef37c.jpeg " img-data="{"format":"jpeg","size":17446,"height":352,"width":922}" class="uploaded-img" style="min-height:200pxmin-width:200px" width="auto" height="auto"/>
</div><span style="font-size:15px">能明显的看出来,自定义导航栏页面内容已经顶到屏幕顶端,除了胶囊按钮,其他都是页面可控区域。</span><span style="font-size:15px">每个手机的屏幕都不一样,各家系统的状态栏高度也不一样,因此,我们在开发页面时要考虑屏幕的适配,有刘海的,要留出刘海的距离,没有的,要把状态栏高度留出来。</span><p><strong><span style="font-size:16px">1.获取导航栏高度及按钮位置</span></strong>
</p><p><span style="font-size:15px">微信提供了获取导航栏高度的Api和胶囊按钮位置的Api</span>
</p><span style="font-size:inherit">// 系统信息</span>
<span style="font-size:inherit">const</span>systemInfo = wx.getSystemInfoSync()
<span style="font-size:inherit">// 胶囊按钮位置信息</span>
<span style="font-size:inherit">const</span>menuButtonInfo = wx.getMenuButtonBoundingClientRect()
<p><span style="font-size:15px">在控制台打印出这两个Api返回结果</span></p><div class="image-package"><img src=" https://upload-images.jianshu.io/upload_images/8877503-7925dd39fb0ec47a.jpeg " img-data="{"format":"jpeg","size":39744,"height":497,"width":679}" class="uploaded-img" style="min-height:200pxmin-width:200px" width="auto" height="auto"/>
</div><p><span style="font-size:15px">这里面我们只说几个我们接下来用到的参数。</span></p>statusBarHeight <span style="font-size:inherit">// 状态栏高度</span>
screenWidth <span style="font-size:inherit">// 胶囊的宽度</span>
top <span style="font-size:inherit">// 胶囊到顶部距离</span>
height <span style="font-size:inherit">// 胶囊的高度</span>
right <span style="font-size:inherit">// 胶囊距离右边的距离</span>
<p><span style="font-size:15px">通过这几个参数,我们可以计算出状态栏的高度,微信胶囊所占的高度(存在padding值,可以使元素和胶囊纵向居中)</span>
</p><p><span style="font-size:15px">首先在app.js中定义全局data-globalData</span></p>globalData: {
navBarHeight: <span style="font-size:inherit">0</span>, <span style="font-size:inherit">// 导航栏高度</span>
menuBotton: <span style="font-size:inherit">0</span>, <span style="font-size:inherit">// 胶囊距底部间距(保持底部间距一致)</span>
menuRight: <span style="font-size:inherit">0</span>,<span style="font-size:inherit">// 胶囊距右方间距(方保持左、右间距一致)</span>
menuHeight: <span style="font-size:inherit">0</span>, <span style="font-size:inherit">// 胶囊高度(自定义内容可与胶囊高度保证一致)</span>
},
<p><span style="font-size:15px">新建个方法</span>
</p>setNavBarInfo() {
<span style="font-size:inherit">// 获取系统信息</span>
const systemInfo = wx.getSystemInfoSync()
<span style="font-size:inherit">// 胶囊按钮位置信息</span>
const menuButtonInfo = wx.getMenuButtonBoundingClientRect()
<span style="font-size:inherit">// 导航栏高度 = 状态栏到胶囊的间距(胶囊距上距离-状态栏高度) * 2 + 胶囊高度 + 状态栏高度</span>
<span style="font-size:inherit">this</span>.globalData.navBarHeight = (menuButtonInfo.top - systemInfo.statusBarHeight) * <span style="font-size:inherit">2</span>+ menuButtonInfo.height + systemInfo.statusBarHeight
<span style="font-size:inherit">this</span>.globalData.menuBotton = menuButtonInfo.top - systemInfo.statusBarHeight
<span style="font-size:inherit">this</span>.globalData.menuRight = systemInfo.screenWidth - menuButtonInfo.right
<span style="font-size:inherit">this</span>.globalData.menuHeight = menuButtonInfo.right
}
<p><span style="font-size:15px">在onLaunch中调用,因为我这个项目是所有的导航都不用微信自带的,所以在app.js</span>
</p><p><span style="font-size:15px">中调用及设置data。</span></p>onLaunch() {
<span style="font-size:inherit">this</span>.setNavBarInfo()
},
<p><span style="font-size:15px"/><span style="font-size:15px">到这里所需要用到的都已经存了起来,页面用法也比较简单,排除状态栏的高度,设置导航栏的高度和胶囊高度保持,用flex布局。</span>
</p><p><strong><span style="font-size:16px">2.页面适配</span></strong></p><p><span style="font-size:15px">首先page.js中定义变量</span></p><span style="font-size:inherit">var</span>app = getApp()
Page({
<span style="font-size:inherit">/*
* 页面的初始数据
/</span>
data: {
navBarHeight: app.globalData.navBarHeight, <span style="font-size:inherit">//导航栏高度</span>
menuBotton: app.globalData.menuBotton, <span style="font-size:inherit">//导航栏距离顶部距离</span>
menuRight: app.globalData.menuRight, <span style="font-size:inherit">//导航栏距离右侧距离</span>
menuHeight: app.globalData.menuHeight, <span style="font-size:inherit">//导航栏高度</span>
}
})
<p><span style="font-size:15px">页面使用</span>
</p><span style="font-size:inherit"><<span style="font-size:inherit">view</span><span style="font-size:inherit">class</span>=<span style="font-size:inherit">"nav"</span><span style="font-size:inherit">style</span>=<span style="font-size:inherit">"height:{{navBarHeight}}px"</span>></span>
<span style="font-size:inherit"><<span style="font-size:inherit">view</span><span style="font-size:inherit">class</span>=<span style="font-size:inherit">"nav-main"</span>></span>
<span style="font-size:inherit"></span>
<span style="font-size:inherit"><<span style="font-size:inherit">view</span>
<span style="font-size:inherit">class</span>=<span style="font-size:inherit">"capsule-box"</span> <span style="font-size:inherit">style</span>=<span style="font-size:inherit">"style="</span><span style="font-size:inherit">height:</span>{{menuHeight+menuBotton 2}}<span style="font-size:inherit">px</span><span style="font-size:inherit">min-height:</span>{{menuHeight}}<span style="font-size:inherit">px</span><span style="font-size:inherit">line-height:</span>{{menuHeight}}<span style="font-size:inherit">px</span><span style="font-size:inherit">bottom:0px</span><span style="font-size:inherit">padding:0</span>{{menuRight}}<span style="font-size:inherit">px</span>"></span>
<span style="font-size:inherit"></span>
<span style="font-size:inherit"><<span style="font-size:inherit">slot</span>></span><span style="font-size:inherit"></<span style="font-size:inherit">slot</span>></span>
<span style="font-size:inherit"></<span style="font-size:inherit">view</span>></span>
<span style="font-size:inherit"></<span style="font-size:inherit">view</span>></span>
<span style="font-size:inherit"></<span style="font-size:inherit">view</span>></span>
<p><span style="font-size:15px">wxss</span>
</p><span style="font-size:inherit">/ 公共导航 */</span>
<span style="font-size:inherit">.nav</span>{
<span style="font-size:inherit">position</span>: fixed
<span style="font-size:inherit">top</span>: <span style="font-size:inherit">0</span>
<span style="font-size:inherit">left</span>: <span style="font-size:inherit">0</span>
<span style="font-size:inherit">box-sizing</span>: border-box
<span style="font-size:inherit">width</span>: <span style="font-size:inherit">100vw</span>
<span style="font-size:inherit">z-index</span>: <span style="font-size:inherit">1000</span>
}
<span style="font-size:inherit">.nav-main</span>{
<span style="font-size:inherit">width</span>: <span style="font-size:inherit">100%</span>
<span style="font-size:inherit">height</span>: <span style="font-size:inherit">100%</span>
<span style="font-size:inherit">box-sizing</span>: border-box
<span style="font-size:inherit">position</span>: relative
}
<span style="font-size:inherit">.nav</span><span style="font-size:inherit">.capsule-box</span>{
<span style="font-size:inherit">position</span>: absolute
<span style="font-size:inherit">box-sizing</span>: border-box
<span style="font-size:inherit">width</span>: <span style="font-size:inherit">100%</span>
<span style="font-size:inherit">display</span>: flex
<span style="font-size:inherit">align-items</span>: center
}
<p><span style="font-size:15px">最终效果</span></p><div class="image-package"><img src=" https://upload-images.jianshu.io/upload_images/8877503-ef017724a144e58c.jpeg " img-data="{"format":"jpeg","size":4933,"height":105,"width":349}" class="uploaded-img" style="min-height:200pxmin-width:200px" width="auto" height="auto"/>
</div><p><span style="font-size:15px"/>
</p><p><span style="font-size:15px">此种适配方案适应所有手机,应该说是最优的选择。</span></p>
12月16日,微信正式发布了WeUI.js动态视觉组件库。WeUI是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,可以让用户的使用感知更加统一。WeUI.js动态视觉组件库包含了button、cell、dialog、progress、toast、article、actionsheet、icon等各式元素。一、weui.js是什么?
weui.js是WeUI的轻量级JS封装,不需要依赖其它库,GZIP后仅有9.0 KB。
二、weui.js包含哪些组件?
actionsheet
alert
confirm
dialog
form
gallery
loading
picker
searchbar
slider
tab
toast
toptips
uploader
三、使用方式:
Github:https://github.com/weui/weui.js
详细文档:http://dwz.cn/4QTFrm
四、微信团队为何在此时公布官方视觉组件库:
1、为了更像微信OS
微信团队和之前的轻应用平台相比,不是简单为了给开发者和用户之间提供一个平台连接、也不是只为了做一个流量入口平台那么简单,而是为了打造一个完美的微信OS生态。当年百度、UC等平台推出的轻应用,更多的只是起到了一个平台倒流和连接的作用,并没有对开发框架和设计规范进行过如此统一的规范和要求。现在看来,最好的生态,当然是类似苹果安卓OS那样,所有的应用具备统一的开发框架和接近OS生态的完美体验。
2、为了极致的用户体验
从小程序内测到公测已经过去了三个月,我们有理由相信微信团队已经接到了不少小程序开发者的审核需求,这其中最让微信团队头疼的应该就是开发设计规范不符合微信团队的要求,达不到微信团队想要的那种用户体验。微信官方进一步推出Weui就是为了让所有开发者提交的小程序都能够接近微信APP的体验效果,从而给微信用户带去最佳的用户体验,这也是未来小程序生态能否提高8亿用户使用热度和频率的一个重要指标。
3、倒逼第三方服务商转型
微信团队在早年推出公众号的时候曾经推出过“开发者模式”,当时,微信团队鼓励第三方公司利用微信公众号开放的接口进行各种微应用的开发,比如:微网站、微商城,微工具等各种应用。但是,微信团队早期并没有对这些接入应用的开发框架和设计规范进行统一的定义和严格要求,导致每一个服务接入商基本都是按照自己的开发框架和设计标准进行开发来设计,使得市面上看到的这些应用页面呈现五花八门,用户体验极其糟糕,这也就造成了早期的应用服务被用户的接受度过低,同时无法给企业带来实际价值的症结所在。随着微信小程序的出现,微信团队重塑统一的开发框架和设计规范,倒逼这些第三方服务机构重新定义自己的跟随策略,按照新的开发规范重新提供新的平台服务。或许,现有的微信第三方服务机构格局将被打破,第三方服务机构将面临新一轮的洗牌。
五、WeUI.js给小程序开发者带来了哪些好处?
1、使用Weui设计出来的小程序如同用户使用微信客户端一样的视觉效果,可以让小程序的体验感更强。
2、使用Weui设计小程序更够提高开发者的开发效率,降低开发者的开发成本,从而让开发者更快的开发出符合规范的小程序。
3、使用Weui设计小程序如同您雇佣一支国内顶尖的设计团队帮您打造一个接近完美的视觉框架。
六、微信小程序给前端设计领域带来了那些影响和推动:
1、全平台兼容
微信小程序重新定义了APP,使得一款应用能够在android、iphone以及windows
phone中都能运行,对于前端来说实现了“一次编译,到处运行”的理念。
2、前端开发思维的改变
设计理念需要从传统的PC思维需要转向到以移动为先的思维,这其中主要考虑的差异化在于屏幕尺寸、网络带宽、输入设备等几个方面的不同。同时很多之前可以用于iOS与Android的控件需要在小程序上重新调整和创新。
3、推动前端技术的发展
微信小程序以其简单的开发环境,使以Javascript和HTML5为主的前端技术成为真正的主流,越来越多的人开始接触前端开发,为前端技术的发展贡献力量。
4、前端投入成本的增加
原本一家传统企业的前端开发人员需要覆盖PC端、移动端、APP应用等各种平台,微信小程序的出现会导致未来的前端开发人员还需要涉及小程序的前端开发设计,这在一定程度增加了前端开发人员学习和工作成本,同时也会给企业带来更多的人才投入成本。
5、前端人才的竞争更加明显
微信小程序的诞生会吸引一大批后台开发、APP开发的程序猿们加入前端开发大军,进一步冲击现有的前端开发人员的的知识结构,加剧前端开发岗位的竞争格局,迫使一些低端且知识结构不全面的前端开发人员面临被淘汰或者失业的风险。
6、全栈工程师会越来越吃香
随着微信小程序的出现,既懂后台,又懂前端的人才会越来越受到企业的重视和拥抱,特别对于创业团队和互联网企业来说,一个拥有全局思维、熟悉各种技术的人才非常重要。身为技术人员,我们需要不断拥抱变化,不断get新技能,努力成为一个全栈工程师。
微信正式发布WeUI.js动态视觉组件库,这意味着,大家可以在小程序里面,直接使用在官方设计文档附录中的视觉组件(而不需要额外引入其他库)。微信团队真的是用心在打造小程序生态,笔者也是真的在用心给大家带来更多干货,这也是笔者第一时间给大家带来的解读。码字不易,如果本文对你和你身边的朋友有所启发,感谢转发,你的支持是我们码字员最大的动力。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)