整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          p2h.cn繼psd轉html之后再推sketch轉html

          2h.cn是國內最早推出psd轉html5服務的網站,psd轉html5是我們的主要核心服務,但是我們發現,越來越多的設計師客戶們開始采用sketch來做網頁設計了 ,在我們與這樣客戶接觸合作過幾例項目之后,我們正式推出sketch轉html服務。sketch和我們傳統的psd切圖有些不一樣的地方,而且需要在mac系統下切圖,不過我們適應了所有的不同。

          歡迎來詢。

          什么是sketch?

          Sketch 是一款適用于所有設計師的矢量繪圖應用。矢量繪圖也是目前進行網頁,圖標以及界面設計的最好方式。但除了矢量編輯的功能之外,我們同樣添加了一些基本的位圖工具,比如模糊和色彩校正。我們盡力讓 Sketch 容易理解并上手簡單,有經驗的設計師花上幾個小時便能將自己的設計技巧在Sketch中自如運用。對于絕大多數的數字產品設計,Sketch 都能替代 Adobe Photoshop,Illustrator 和 Fireworks。

          歡迎轉載,轉載請注明來源:http://www.p2h.cn/sketch-2-html/

          、引言

          2018年3月份,由小米,中興,華為等10家廠商成立了快應用聯盟,共同發布了快應用的標準。 自此我們可以采用一套標準去開發應用,而無縫的運行在各個手機廠商上。一次開發,一次上傳,自動分發到所有聯盟廠商的設備。根據快應用官方的說法,快應用官方是采用前端的技術棧來開發的,這篇文章以一個前端開發者的角度,來介紹怎么開發快應用,快速入門快應用的開發。

          1.什么是快應用

          • 快應用是基于手機硬件平臺的新型應用形態,標準是由主流手機廠商組成的快應用聯盟聯合制定;
          • 快應用標準的誕生將在研發接口、能力接入、開發者服務等層面建設標準平臺;以平臺化的生態模式對個人開發者和企業開發者全品類開放;
          • 快應用具備傳統APP完整的應用體驗,無需安裝,即點即用。

          2.快應用技術特點

          • 采用前端技術棧,運行和開發效率高,學習成本低,代碼可以復用;
          • 原生渲染能力,功能完備,體驗等同于應用,資源消耗小。

          從上面我們可以了解到:

          1. 快應用不是HTML5,但是可以用前端已有技術棧直接上手開發;

          2. 快應用是原生渲染,有著比H5更加完備的功能及原生體驗;

          3. 快應用即點即用,無需安裝。

          二、快應用 vs HTML5開發

          首先,我們來回顧一下,在web項目中是怎么進行開發的?

          簡單的說下,可以分為以下9個步驟:

          • 拿到PSD設計圖
          • 切圖
          • 將PSD 轉成html
          • 寫JS業務邏輯
          • mock數據,自測
          • 與后端聯調
          • 提交測試
          • 上線
          • 迭代與優化

          如下圖所示:

          做過前端的同學對這個步驟應該很熟悉了,快應用的開發步驟和這差不多,主要有2點差別,我們來比較一下:

          • html5開發是基于瀏覽器的,直接寫完后在瀏覽器下就可以運行,看效果。但是快應用開發是基于nodejs環境的,所以我們開始需要搭建一下開發環境;
          • 在將PSD轉成html的時候,快應用提供了一個腳手架,當然html5的一些項目里面也有腳手架,比如vue,react項目,官方都提供了一個腳手架,方便開發者進行開發。

          如下圖所示,下面是快應用的開發過程:

          下面從 搭建環境,hap-toolkit的使用,靜態頁面書寫(PSD轉成html),js業務邏輯的書寫,調試這5個方面來說說如何開發快應用。其他的步驟都是html5開發常見的步驟,和html5一樣,直接遷移過來就行。

          1.搭建開發環境

          快應用開發是基于前端技術棧的,官方團隊提供了基于nodejs的開發環境,可以參考官網的詳細教程。

          主要是:

          • nodejs(推薦 node 8以上版本)
          • hap-toolkit 編譯工具。
          • 快應用調試器和快應用預覽版(方便調試和查看效果)

          當然快應用官方也提供了IDE,也可以直接安裝一個IDE。

          2.hap-toolkit的使用

          安裝好hap-toolkit后,可以在控制臺輸入hap -v 看看當前的版本。

          當前的最新版本是0.1.1

          下面是hap-toolkit的一些常見用法

          具體可以參考:

          https://doc.quickapp.cn/tools/toolkit-tools.html

          3.靜態頁面書寫

          快應用提供了組件和指令,方便PSD轉化成html。

          01.組件

          快應用中組件與Vue中組件類似,一個快應用,可以組織為一個嵌套的組件樹,如下圖所示:

          組件分類:

          • 原生組件
          • 自定義組件

          當一個頁面的業務邏輯變得復雜時,就需要將頁面拆成多個模塊,完成解耦。所以,快應用提供了自定義組件的能力,定義自定義組件與開發頁面一致。

          (1)text、div等為原生組件,由各平臺 Native 底層渲染;

          (2)自定義組件是一個開發者編寫的組件,使用起來和 Native 一樣,最終按照組件的<template>來渲染,頁面也是一種自定義組件;

          (3)自定義組件比頁面組件的不同之處在于多了一個props屬性,用于聲明該組件可接受的外部數據傳遞,props是一個數組,數組中每個元素是暴露的屬性名稱,如果屬性名稱使用駝峰定義,如:prop2Object,那么在外部傳遞數據時請使用-連接,如:prop2-object;

          (4)引入自定義組件的方式為通過 <import> 標簽引入,如: <import name="comp-part1" src="./part1"></import>;

          (5)父子組件之間可以通過事件進行通信,兄弟組件之間通過 Publish/Subscribe 模型來完成通信,詳情請見文檔。

          02.指令

          框架指令是框架為組件定義的特殊屬性,以及框架提供的特殊組件,用于自定義頁面DOM結構渲染邏輯。

          指令主要包含:

          注意:

          (1)for 循環 自定義變量表示 for 指令的數組索引和數組元素時,變量名不可以用$或_開頭

          (2) if/elif/else 節點必須是相鄰的兄弟節點

          4.JS業務邏輯的書寫

          快應用的js是采用es6語法標準的,支持es6的特性。

          這里主要講2個方面:生命周期和事件機制

          01.生命周期

          生命周期概念為現代前端開發的重要基礎,快應用里,頁面的生命周期指的也就是ViewModel的生命周期,整個頁面生命周期如下:

          APP 中可以同時運行多個頁面,但是每次只能顯示其中一個頁面;這點與純前端開發,瀏覽器頁面中每次只能有一個頁面,當前頁簽打開另一個頁面,上個頁面就銷毀了。

          02.事件機制

          與html5一樣,快應用里面也提供了事件機制。

          • on用于監聽自定義事件;off移除對應的事件監聽;
          • $emit()、 $dispatch()、 $broadcast()等觸發事件,其中$dispatch()為向上傳遞,$broadcast()為向下傳遞;
          • 原生組件支持一系列事件,如通用事件、組件專有事件,通過on+事件名稱作為組件屬性,來監聽事件 (如: focus事件,可以用 onfocus 屬性監聽)。

          5.調試

          不同于傳統前端開發,快應用運行在廠商聯盟的手機上。因此,官方提供了調試工具。

          開發者可通過快應用調試器、hap-toolkit 的遠程調試命令 、chrome devtools 調試界面,來調試快應用。

          快應用調試目前支持 chrome devtools 中的elements, console, source, network等模塊。

          使用chrome devtools進行調試

          三、性能優化

          性能優化是前端永恒的主題

          性能優化包括兩個大類:

          • 通用的解決方案,這類具有普適性;
          • 與具體組件結合的解決方案,如:組件級別的懶加載,甚至利用組件本身特性完成優化。

          建議開發者了解性能優化的常見方案,提升應用性能

          1.簡化ViewModel的數據

          在ViewModel的定義中,屬性public、protected、private 主要承擔數據驅動的數據定義與改造功能,會對賦值的數據中每個屬性進行遞歸式的定義。因此,屬性個數的定義越少越好,尤其是數組類型數據,建議過濾不需要用到的對象屬性。

          示例如下:

          如果頁面僅需要用到 list 中每個 item 的 userId, orderName 屬性的話,則僅賦值這兩個屬性到ViewModel數據中,過濾掉非相關屬性。

          // 模擬fetch請求返回的數據

          const orderList = [

          {

          userId: '123',

          orderName: 'XX產品',

          userName: '張三',

          shoppingList: [

          {

          productId: '001',

          productLink: 'http://xxx',

          productShop: {

          ownerId: '2390',

          ownerName: 'XXX店鋪'

          }

          }

          ]

          },

          {

          // ...

          }

          ]

          export default {

          private: {

          list: []

          },

          onInit () {

          // 返回頁面中需要的對象屬性,過濾無用的對象屬性

          this.list = orderList.map(item => {

          userId: item.userId,

          orderName: item.orderName

          })

          }

          }

          2.合理使用后代選擇器

          框架支持 CSS 中的后代選擇、支持 less 預編譯,方便開發者開發,提升代碼可維護性。然而,過多的使用后代選擇器,也會在節點匹配上帶來性能損耗,尤其是當一個節點滿足多個選擇時。

          優化建議如下:

          • 避免使用組件名稱(tag 標簽名稱)作為后代選擇的最后一項匹配規則,如: .doc-page #shop text { ... };否則每個 text 組件渲染時都會遍歷匹配一次;
          • 減少后代選擇的層級數量,層級越深,單次匹配耗時越長,如:.class1 .class2 .class3 .class4 .class5 .class6 { ... };
          • 后代選擇中最后一條匹配規則的定義名稱盡量唯一,如:.doc-page #shop .shop-item .shop-name-full { ... }。

          3.使用懶加載

          懶加載是一項通用的優化手段,傳統 H5 頁面中的圖片懶加載,指的是頁面即將滾動到屏幕可視區域時,才加載資源,渲染頁面。

          在框架中,也可以使用懶加載技術:為了加快頁面可視區域的渲染,可以通過指令或者事件觸發等手段推遲不可見區域的渲染。

          四、參考文檔

          • 快應用開發教程
          • https://doc.quickapp.cn/tutorial/
          • sample項目
          • https://github.com/quickappcn/sample

          來越多的開發者熱衷于使用html5+JavaScript開發移動Web App。不過,HTML5 Web APP的出現能否在未來取代移動應用,就目前來說,還是個未知數。那么,有什么辦法,既可以使用HTMl5開發應 用,又可以將其簡單封裝成APK文件呢?

          一、Android SDK中的WebView

          1.在要Activity中實例化WebView組件:WebView webView = new WebView(this);

          2.調用WebView的loadUrl()方法,設置WevView要顯示的網頁:

          ? 互聯網用:webView.loadUrl("http://www.qietu.com");

          ? 本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中

          3.調用Activity的setContentView( )方法來顯示網頁視圖

          4.用WebView點鏈接看了很多頁以后為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面

          5.需要在AndroidManifest.xml文件中添加權限,否則會出現Web page not available錯誤。

          ? <uses-permission android:name="android.permission.INTERNET" />

          缺點:如果是載入的是普通網頁,沒有什么問題,但如果是html5,封裝后,在android2.3以上才能正常訪問,android2.2及以下,SDK中的WebView還沒完全支持HTML5

          下面是具體例子:

          MainActivity.java

          ??? package com.android.webview.activity; ?

          ??? import android.app.Activity; ?

          ??? import android.os.Bundle; ?

          ??? import android.view.KeyEvent; ?

          ??? import android.webkit.WebView; ?

          ??? public class MainActivity extends Activity { ?

          ??????? private WebView webview; ?

          ??????? @Override

          ??????? public void onCreate(Bundle savedInstanceState) { ?

          ??????????? super.onCreate(savedInstanceState); ?

          ??????????? //實例化WebView對象 ?

          ??????????? webview = new WebView(this); ?

          ??????????? //設置WebView屬性,能夠執行Javascript腳本 ?

          ??????????? webview.getSettings().setJavaScriptEnabled(true); ?

          ??????????? //加載需要顯示的網頁 ?

          ??????????? webview.loadUrl("http://www.qietu.com/"); ?

          ??????????? //設置Web視圖 ?

          ??????????? setContentView(webview); ?

          ??????? } ?

          ??????? @Override

          ??????? //設置回退 ?

          ??????? //覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法 ?

          ??????? public boolean onKeyDown(int keyCode, KeyEvent event) { ?

          ??????????? if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { ?

          ??????????????? webview.goBack(); //goBack()表示返回WebView的上一頁面 ?

          ??????????????? return true; ?

          ??????????? } ?

          ??????????? return false; ?

          ??? }

          在AndroidManifest.xml文件中添加權限

          ??? <?xml version="1.0" encoding="utf-8"?>

          ??? <manifest xmlns:android="http://schemas.android.com/apk/res/android"

          ????????? package="com.android.webview.activity"

          ????????? android:versionCode="1"

          ????????? android:versionName="1.0">

          ??????? <uses-sdk android:minSdkVersion="10" />

          ??????? <application android:icon="@drawable/icon" android:label="@string/app_name">

          ??????????? <activity android:name=".MainActivity"

          ????????????????????? android:label="@string/app_name">

          ??????????????? <intent-filter>

          ??????????????????? <action android:name="android.intent.action.MAIN" />

          ??????????????????? <category android:name="android.intent.category.LAUNCHER" />

          ??????????????? </intent-filter>

          ??????????? </activity>

          ??????? </application>

          ??????? <uses-permission android:name="android.permission.INTERNET"/>

          ??? </manifest>

          二、使用PhoneGap

          ??? PhoneGap是一個用基于HTML,CSS和JavaScript的,創建移動跨平臺移動應用程序的快速開發平臺。它使開發者能夠利用 iPhone,Android,Palm,Symbian,WP7,Bada和Blackberry智能手機的核心功能——包括地理定位,加速器,聯系 人,聲音和振動等,此外PhoneGap擁有豐富的插件,可以以此擴展無限的功能。PhoneGap是免費的,但是它需要特定平臺提供的附加軟件,例如 iPhone的iPhone SDK,Android的Android SDK等,

          詳細方法請見:http://phonegap.com/start#android

          優點:在Eclipse中加入SDK,編程自由,完美適應不同設備屏幕大小,適合高手使用。

          缺點:沒有使用布局,直接加載網頁,不能添加廣告。

          ----------------

          切圖網(qietu.com)最早將psd轉html服務模式帶到國內,并首個提供響應式、webapp前端開發的公司。專注web前端開發技術,關注用戶體驗,加我們公眾微信賬號:qietuwang(長按復制)


          主站蜘蛛池模板: 国产伦精品一区二区免费| 99久久综合狠狠综合久久一区| 精品女同一区二区三区在线 | 国产成人精品一区二区三区| 91视频国产一区| 亚欧色一区W666天堂| 精品国产AⅤ一区二区三区4区 | 国产精品一区二区久久| 三上悠亚一区二区观看| 视频一区在线免费观看| 国产成人久久一区二区三区| 在线日产精品一区| 国产精品视频分类一区| 久久er99热精品一区二区| 国产一区二区精品| 国产精品主播一区二区| 一区二区三区在线观看免费| 午夜性色一区二区三区不卡视频| 亚洲av成人一区二区三区| AV无码精品一区二区三区宅噜噜 | 韩国精品福利一区二区三区| 亚洲一区二区三区久久久久| 久久久一区二区三区| 无码人妻精品一区二区在线视频 | 亚洲AV日韩精品一区二区三区| 精品一区二区三区在线视频观看 | 麻豆AV一区二区三区| 韩国精品一区二区三区无码视频| 中文字幕在线看视频一区二区三区| 精品久久一区二区三区| 亚洲AV无一区二区三区久久| 色窝窝无码一区二区三区| 乱精品一区字幕二区| 乱子伦一区二区三区| 国产精品视频一区二区猎奇| 人妻av综合天堂一区| 天天看高清无码一区二区三区| 日韩精品一区二区三区中文字幕 | 日韩精品一区二区三区老鸭窝| 亚洲AV日韩综合一区尤物| 国模无码一区二区三区|