⑴ iOS 開發,APP前端和後台怎麼進行數據交換的
前端開發與後台交互的數據
JSON(JavaScriptObject Notation),這也是一種輕量級的數據傳輸格式,就是用一堆中括弧把數據組織起來。
XML,但是我們項目中用的最多的就是JSON數據格式,它的一般形式。
前後端會大概說一下介面地址,前端請求的參數,後端返回的參數,然後大家就開始寫,寫的差不多的時候,大家調一下介面看一下返回的數據,沒問題就可以了。
字元串轉化toString()
字元串分隔split()
字元串替換replace()
獲取長度length
查詢子字元串 indexOf
返回指定位置的字元串或字元串編碼 charAt charCodeAt
字元串匹配 match
字元串拼接concat
字元串的切割或提取slice() substring() substr()
字元串大小寫轉化 toLowerCase toUpperCase
字元串去空格 trim() 用來刪除字元串前後的空格
- const str = '11122223333'const uniqueStr = [...new Set(str)].join('')
- arr.rece(callback,[initialValue])
- 跳過第一個索引。如果提供initialValue,從索引0開始。
- const arr = [1, 2, 3, 1, 2, 3]const uniqueArr = [...new Set(arr)]
- var a = {};Object.defineProperty(a, 'name', { value : 'kong', enumerable : true //該屬性是否可枚舉})
- function a(){}
- var b = new a();console.log(a.prototype.isPrototypeOf(b));//true
- if (/Android/gi.test(navigator.userAgent)) { window.addEventListener('resize', function () { if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') { window.setTimeout(function () { document.activeElement.scrollIntoViewIfNeeded();
- }, 0);
- }
- });
- };
- /**
- * 向URL追加參數
- * @function stringifyUrlArgs
- * @param {string} url - URL路徑
- * @param {object} params - 參數對象
- * @return {string}
- const stringifyUrlArgs = (url, params) => {
- url += (/?/).test(url) ? '&' : '?'
- url += Object.keys(params).map(key => `${key}=${params[key]}`).join('&') return url
- }
- /**
- * 解析URL參數
- * @function parseUrlArgs
- * @param {string} url - 字元串
- * @return {object}export const parseUrlArgs = url => { const arr = url.match(/([^?=&]+)(=([^&]*))/g) || [] const args = arr.rece((a, v) => {
- a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1) return a
- }, {}) return args
- }
- NP.strip(num) // strip a number to nearest right numberNP.plus(num1, num2, num3, ...) // addition, num + num2 + num3, two numbers is required at least.NP.minus(num1, num2, num3, ...) // subtraction, num1 - num2 - num3NP.times(num1, num2, num3, ...) // multiplication, num1 * num2 * num3NP.divide(num1, num2, num3, ...) // division, num1 / num2 / num3NP.round(num, ratio) // round a number based on ratio
⑵ 前端開發的基本方法
CSS部分
盒子邊傾斜
clip-path: polygon(12% 0, 100% 0, 100% 100%, 0 100%);
禁止點擊事件/滑鼠事件「穿透」
div * { pointer-events: none; /*鏈接啊,點擊事件啊,都沒有效果了*/ }
用來控制元素在移動設備上使用滾動回彈效果
.main{
-webkit-overflow-scrolling: touch;
}
可解決在IOS中使用overflow:auto 形成的滾動條,滾動不流暢的情況
文字漸變效果
.text-gradient{ background-image: linear-gradient(135deg, deeppink, deepskyblue);
-webkit-background-clip: text; color: transparent;
}
css三角形
#triangle-up { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 100px solid red;
}
實現圓弧
clip-path: ellipse(80%60% at50%40%);
JS部分
JavaScript中檢測數組的方法
(1)、typeof操作符
這種方法對一些常用的類型檢查沒有問題,但對array和null 都判斷為object
(2)、instanceof操作符
這個操作符是檢測對象的原型鏈是否指向構造函數的prototype對象的
(3)、對象的constructor屬性
const arr = []
console.log(arr.constructor === Array) // true
(4)、Object.prototype.toString
constarr=[]console.log(Object.prototype.toString.call(arr)==='[objectArray]')//true
(5)、Array.isArray()
常用的字元串操作
其中第9中三者的區別如下:
(1)slice(), 參數可以是負數,負數表示從字元串最後一個位置開始切割到對應結束位置
(2)substring(),參數不可為負數,切割第一個位置到第二個位置的字元串
(3)substr(), 參數可以是負數,第一個參數是開始位置,第二個參數為切割的長度
字元串去重
常用的數組操作
1、Array.map()
此方法是將數組中的每個元素調用一個提供的函數,結果作為一個新的數組返回,並沒有改變原來的數組
2、Array.forEach()
此方法是將數組中的每個元素執行傳進提供的函數,沒有返回值,注意和map方法區分
3、Array.filter()
此方法是將滿足條件的元素作為一個新數組返回
4、Array.every()
此方法將數組所有元素進行判斷返回一個布爾值,如果所有元素都符合判斷條件,則返回true,否則返回false
5、Array.some()
此方法將數組所有元素進行判斷返回一個布爾值,如果有一個元素滿足判斷條件,則返回true,所有元素都不滿足則返回false
6、Array.rece()
此方法為所有元素調用返回函數
7、Array.push()
在數組最後面添加新元素
8、Array.shift()
刪除數組第一個元素
9、Array.pop()
刪除數組最後一個元素
10、Array.unshift()
在數組最前面增加元素
11、Array.isArray()
判斷是否為一個數組
12、Array.concat()
數組拼接
13、Array.toString()
數組轉化為字元串
14、Array.join()
數組轉化為字元串,並用第一個參數作為連接符
15、Array.splice(開始位置,刪除個數,元素)
其中rece使用方法為:
callback (執行數組中每個值的函數,包含四個參數)
1、previousValue (上一次調用回調返回的值,或者是提供的初始值(initialValue))
2、currentValue (數組中當前被處理的元素)
3、index (當前元素在數組中的索引)
4、array (調用 rece 的數組) initialValue (作為第一次調用 callback 的第一個參數。)
如果沒有提供initialValue,rece 會從索引1的地方開始執行 callback 方法,
數組去重:
常用對象方法
1、Object.assign()
用於克隆,兩個參數,將第二個對象分配到第一個中
2、Object.is()
用於判斷兩個值是否相同
//注意,該函數與==運算符不同,不會強制轉換任何類型, 應該更加類似於===,但值得注意的是它會將+0和-0視作不同值
3、Object.keys()
用於返回對象可枚舉的屬性和方法的名稱,返回一個屬性或方法名稱的字元串數組。
4、Object.defineProperty()
劫持變數的set和get方法,將屬性添加到對象,或修改現有屬性的特性
5、Object.defineProperties()
可添加多個屬性,與Object.defineProperty()對應,
6、isPrototypeOf
安卓監聽可視區域變化,讓輸入框移動至可視區域
vue中平滑滾動到某個位置
this.$refs.rule.scrollIntoView({ block: 'start', behavior: 'smooth' })
向URL追加參數
解析URL參數
好用的JavaSrcipt庫與模塊(包)
日期時間處理庫
1、monent.js
2、day.js
day相對於monent要輕量許多
高精度數學運算
number-precision
實用工具庫
Lodash
lodash 是一個 JavaScript 實用工具庫,提供一致性,及模塊化、性能和配件等功能。
Lodash 消除了處理數組的麻煩,從而簡化了 JavaScript、 數字、對象、字元串等
⑶ 零基礎學習前端開發要怎麼開始
這里整理了一份web前端學習路線的思維導圖,需要掌握和學習的內容如下:
第一階段:專業核心基礎
階段目標:
1. 熟練掌握HTML5、CSS3、Less、Sass、響應書布局、移動端開發。
2. 熟練運用HTML+CSS特性完成頁面布局。
4. 熟練應用CSS3技術,動畫、彈性盒模型設計。
5. 熟練完成移動端頁面的設計。
6. 熟練運用所學知識仿製任意Web網站。
7. 能綜合運用所學知識完成網頁設計實戰。
知識點:
1、Web前端開發環境,HTML常用標簽,表單元素,Table布局,CSS樣式表,DIV+CSS布局。熟練運用HTML和CSS樣式屬性完成頁面的布局和美化,能夠仿製任意網站的前端頁面實現。
2、CSS3選擇器、偽類、過渡、變換、動畫、字體圖標、彈性盒模型、響應式布局、移動端。熟練運用CSS3來開發網頁、熟練開發移動端,整理網頁開發技巧。
3、預編譯css技術:less、sass基礎知識、以及插件的運用、BootStrap源碼分析。能夠熟練使用 less、sass完成項目開發,深入了解BootStrap。
4、使用HTML、CSS、LESS、SASS等技術完成網頁項目實戰。通過項目掌握第一階段html、css的內容、完成PC端頁面設計和移動端頁面設計。
第二階段:Web後台技術
階段目標:
1. 了解JavaScript的發展歷史、掌握Node環境搭建及npm使用。
2. 熟練掌握JavaScript的基本數據類型和變數的概念。
3. 熟練掌握JavaScript中的運算符使用。
4. 深入理解分支結構語句和循環語句。
5. 熟練使用數組來完成各種練習。
6.熟悉es6的語法、熟練掌握JavaScript面向對象編程。
7.DOM和BOM實戰練習和H5新特性和協議的學習。
知識點:
1、軟體開發流程、演算法、變數、數據類型、分之語句、循環語句、數組和函數。熟練運用JavaScript的知識完成各種練習。
2、JavaScript面向對象基礎、異常處理機制、常見對象api,js的兼容性、ES6新特性。熟練掌握JavaScript面向對象的開發以及掌握es6中的重要內容。
3、BOM操作和DOM操作。熟練使用BOM的各種對象、熟練操作DOM的對象。
4、h5相關api、canvas、ajax、數據模擬、touch事件、mockjs。熟練使用所學知識來完成網站項目開發。
第三階段:資料庫和框架實戰
階段目標:
1. 綜合運用Web前端技術進行頁面布局與美化。
2. 綜合運用Web前端開發框架進行Web系統開發。
3. 熟練掌握Mysql、Mongodb資料庫的發開。
4. 熟練掌握vue.js、webpack、elementui等前端框技術。
5. 熟練運用Node.js開發後台應用程序。
6. 對Restful,Ajax,JSON,開發過程有深入的理解,掌握git的基本技能。
知識點:
1、資料庫知識,範式,MySQL配置,命令,建庫建表,數據的增刪改查,mongodb資料庫。深入理解資料庫管理系統通用知識及MySQL資料庫的使用與管理,為Node.js後台開發打下堅實基礎。
2、模塊系統,函數,路由,全局對象,文件系統,請求處理,Web模塊,Express框架,MySQL資料庫處理,RestfulAPI,文件上傳等。熟練運用Node.js運行環境和後台開發框架完成Web系統的後台開發。
3、vue的組件、生命周期、路由、組件、前端工程化、webpack、elementui框架。Vue.js框架的基本使用有清晰的理解,能夠運用Vue.js完成基礎前端開發、熟練運用Vue.js框架的高級功能完成Web前端開發和組件開發,對MVVM模式有深刻理解。
4、需求分析,資料庫設計,後台開發,使用vue、node完成pc和移動端整站開發。於Node.js+Vue.js+Webpack+Mysql+Mongodb+Git,實現整站項目完整功能並上線發布。
第四階段:移動端和微信實戰
階段目標:
1.熟練掌握React.js框架,熟練使用React.js完成開發。
2.掌握移動端開發原理,理解原生開發和混合開發。
3.熟練使用react-native和Flutter框架完成移動端開發。
4.掌握微信小程序以及了解支付寶小程序的開發。
5.完成大型電商項目開發。
知識點:
1、React面向組件編程、表單數據、組件通信、監聽、生命周期、路由、Rex基本概念。練使用react完成項目開發、掌握Rex中的非同步解決方案Saga。
2、react-native、開發工具、視圖與渲染、api操作、Flutter環境搭建、路由、ListView組件、網路請求、打包。練掌握react-native和Flutter框架,並分別使用react-native和Flutter分別能開發移動端項目。
3、微信小程序基本介紹、開發工具、視圖與渲染、api操作、支付寶小程序的入門和api學習。掌握微信小程序開發了解支付寶小程序。
4、大型購物網站實戰,整個項目前後端分離開發;整個項目分為四部分:PC端網頁、移動端APP、小程序、後台管理。團隊協作開發,使用git進行版本控制。目期間可以擴展Three.js 、TypeScript。
這已經是一套非常完備的Java學習路線了,零基礎學習Java完全自學的話還是比較吃力的,建議還是找專業的機構系統學一下,可以點 擊 頭 像 了解一下。
⑷ 前端開發需要學什麼啊
前端開發需要學習的內容包括PC網站布局、HTML5+CSS3基礎項目、webapp頁面布局等。
學習web前端開發,web開發工具有frontpage,可以使用word讓人輕松學習frontpage,另一個常見的是Dreamweaver,這兩個是最常用的HTML網頁製作工具。
HTML、CSS和JavaScript、Html是內容,CSS是性能,JavaScript是行為,與伺服器端語言的學習曲線相比,前端開發的學習曲線先快後慢。
Html最基本,先學習網頁的布局,然後CSS用於美化HTML頁面,並為頁面提供布局和格式,最後,學習JavaScript。
(4)ios前端開發教程擴展閱讀:
主要職能:
1、熟練使用DIV+CSS並結合JS負責產品的前端開發和頁面製作;
2、熟悉W3C標准和各主流瀏覽器在前端開發中的差異,能運用DIV+CSS解決瀏覽器的兼容性;
3、負責相關產品的需求以及前端程序的實現,提供合理的前端架構;
4、與產品、後台開發人員保持良好溝通,能快速理解、消化各方需求,並落實為具體的開發工作;
5、了解伺服器端的相關工作,在交互體驗、產品設計等方面有自己的見解。
參考資料來源:網路-前端開發
⑸ 作為一個移動端的前端開發需要具備什麼技能呢
學習前端首先要去學習一些html和css技術。iOS、Android、HTML5前景都是不錯的,可以看育知同創Mars視頻教程學習。
iOS與安卓的區別:
1、兩者運行機制不同:iOS採用的是沙盒運行機制,安卓採用的是虛擬機運行機制。
2、兩者後台制度不同:iOS中任何第三方程序都不能在後台運行;安卓中任何程序都能在後台運行,直到沒有內存才會關閉。
3、iOS中用於UI指令許可權最高,安卓中數據處理指令許可權最高。
4、發行的公司不同:iOS由美國蘋果公司開發更新;安卓由美國谷歌公司開發更新
5、免費與收費:iOS非開源的,需要收費的;安卓是開源的,任何人可以免費使用而不用交費
⑹ 想學前端,應該如何入門
一、首先,在學習之前搞清楚你要做什麼工作崗位,看看招聘網站上的要求有哪些,這些都是你學的動力。也能讓你很快的重新入行。
下面我幫你總結了三條:
1、知識構架。如果題主知識構架比較豐富,那麼你學習前端開發的過程相對較快。同時也是你較強的崗位競爭力。如果不是,建議找人帶你整體梳理一遍。
2、開發場景。前端開發目前在功能上不斷得到拓展,除了傳統的web前端開發之外,還包括Android開發、iOS開發和各大平台小程序開發等,對應的你需要了解、掌握JavaScript、Android開發需要掌握java語言(或者kotlin),而iOS開發則需要掌握OC或者Swift語言。你可以選擇好心儀的公司再去對應學習。
3、實戰經驗。按照題主的情況需要多找項目來練練手,有需要的可以SX我。
二、根據企業的要求,規劃一條科學合理的學習路線圖。請你看下面學習路線圖,完全是針對企業定製化人才需求規劃。避免小白踩坑。
第一階段:前端頁面重構
內容包含了:(PC端網站布局項目、HTML+CSS基礎項目、WebApp頁面布局項目)
第二階段:JavaScript高級程序設計
內容包含:(原生 JavaScript交互功能開發項目、面向對象進階與 ES/ES應用項目、JavaScript工具庫自主研發項目)
第三階段:PC端全棧項目開發
內容包含:(jQuery經典交互特效開發、HTTP協議、Ajax進階與PHP/JAVA開發項目、前端工程化與模塊化應用項目、PC端網站開發項目、PC端管理信息系統前端開發項目)
第四階段:移動端項目開發
內容包含:(Touch端項目、微信場景項目、應用 Angular+Ionic開發 WebApp項目、應用 Vue.js開發 WebApp項目、應用 React.js開發 WebApp項目)
第五階段:混合(Hybrid,ReactNative)開發
內容包含:(微信小程序開發、React Native、各類混合應用開發)
第六階段:NodeJS全棧開發
內容包括:(WebApp後端系統開發、一、NodeJS基礎與NodeJS核心模塊二、Express三、noSQL資料庫)
第七階段:大數據可視化
內容包含:(大數據可視化化基礎與實戰、一、數據可視化入門、二、D.js詳解、三、其他JS庫)
三、學習web前端注意事項:
1.不要以看書學習為主,學習編程不是數學語文那麼容易,你看看例題就會了,更需要的是別人的講解,你自己看書上那些專業的文字,只是憑你自己意識理解的那樣來,但是一般情況下我們都理解不了,畢竟我們不是出書的人,最好的方式就是找視頻進行學習,找好的視頻進行學習,然後在配上別人的解答,再加上自我的主動學習。
2.當你學習的時候,可能會出現學了就忘記不住的情況,小編見過很多這樣的情況,包括自己曾經學習的時候也是這樣。打個比方:比方說我們在學習英語的時候,一天學習20個單詞,但是過了一周之後,我肯定會忘記之前學過的單詞。那麼記住這些單詞最好的辦法就是應用於對話當中。我們學習web前端也是這樣,同一個標簽或者屬性,或者是JavaScript的語法,只有你不斷的見到它,並且應用它,讓它都認識你了,這樣你就扎實的掌握了,所以實際應用非常重要。
3.學習方法決定了你學web前端的效率以及你可以走多遠,學習編程非常依賴一個好的學習方法,有太多人因為學習方法不對最終導致放棄,所以小編讓各位一定注意自己的學習方法,每個人的學習方法不一樣,但是大多數人錯誤的學習方法都是相同的,所以這方面一定要找
四、在學習時要自己了解知道的幾點:
1.了解市場需求
首先,零基礎的人應該去了解目前想要找到一份web前端的工作,應該具備哪些技能,當你符合這些企業的基本標准後,工作就不成問題。先知道自己應該達到什麼標准,然後再去學習,不學無用的知識,只學工作需求大的知識,這可以避免浪費時間,這方面不浪費口舌多說,可以到招聘網站多去搜集一些,或者來問我。
2.制定計劃
既然想在短時間學好一個技術,那麼就應該運籌帷幄,如果你連一個明確的規劃都沒有,那很難說你能比別人做的更好,用更短的時間學好應該掌握的那些技術,一個好的規劃非常重要,有很多人學習的時候就很混亂,結果必然不好。能每天按照計劃完成的人並不多,這需要你個人的自律性,如果自己懶惰,神仙都救不了。你每天應該學習多少知識點,應該如何鞏固,你要很明確。
3.輔助工具
做成一件事,無論個人能力多麼出眾,一定要有好的裝備,那麼對於學習web前端來說,什麼是好的裝備?比如:一個好老師的指導、一套好的視頻教學、一本適合你閱讀的JavaScript書籍、一個適合你的開發工具等等。這些都是輔助你的工具,但是能不能登上珠穆朗瑪峰還要靠你自己,其他的都是好裝備而已,沒這些裝備還不行。
學習的同時敲代碼,多做幾個項目,實踐中成長、遇到難題就記下來,把它搞懂,下次遇到就會敲!
⑺ H5頁面與原生App(安卓,IOS)交互
在客戶端項目中,同一個app會開發成兩個版本,一個是安卓版本,一個IOS版本,公司必須有兩個開發團隊(一個安卓團隊,一個IOS團隊)來進行開發,這樣一來,開發成本非常之高。所以,往往在實際項目-中,會嵌套很多H5頁面,一個H5頁面同時兼容安卓和IOS兩個系統 ,這樣一來,大大減少了開發成本,前端開發頁面就必須和原生進行交互。
1. 頁面開發 —— 前端開發人員將所有的頁面按照移動webappp進行開發,做好不同屏幕的適配(寬度100%,視口為移動端視口 (快捷方式meta:vp tap),字體適配rem單位,設置html根標簽的font-size然後根據媒體查詢判斷設備屏幕大小進而設置html根標簽的不同fontsize,去除移動端高亮顯示;小圖標要善於使用字體圖標(常用的字體圖標庫有阿里巴巴矢量圖),改變input標簽的默認樣式可以採用隱藏input,然後通過字體圖標來控制前面的圖標,就可以做成自己想要的圖標效果)
2.前端頁面部署 —— 設置好入口文件(原生一進來就進入的頁面,命名為index.html),部署到對應的伺服器上,通過網址就能夠訪問到頁面,將網址給app客戶端開發人員,他們將app配置好環境後講頁面嵌套在app中。
3.進行數據對接:兩種對接方式(1).前端頁面自己通過ajax去後台拉數據,然後自己在頁面上使用再提交給後台。前提是原生需要將對應的設備號,加密方式,請求數據所需要的各種參數通過回調函數傳遞給H5頁面,H5頁面拿到這些數據後直接調後台的借口、獲取到數據。(2).前端頁面不用自己去後台拉取數據,而是通過回調函數,獲取到原生app拉取的數據,前端頁面將這些數據處理後又通過回調函數交給app,再又app發送給後台。兩種調用的優劣比較:如果H5頁面及數據不是很多,使用第二種方式比較合理,不用H5頁面請求數據(不用封裝請求,不用加密數據),不使用框架,大大減少了頁面的大小,提高性能及用戶體驗。如果涉及到的前端頁面非常多,數據交互比較復雜的話,就必須使用第一種對接方式了,app只需要將設備號,加密規則,參數傳遞給H5,H5根據頁面需求自己向後台拉去和請求數據,直接交互,不再通過app進行轉接,減小復雜程度。
⑻ 前端開發在ios上怎麼不讓頁面向下拖動
原因分析:
ios的webview 內核 設定了其在進行momentum scrolling(彈性滾動)時,會停止所有的 事件響應 及 DOM操作引起的頁面渲染 (親測),故 onscroll 不能實時響應
曾做兼容方案:
使用 ontouchmove 去替代 nscroll ,雖然能更頻繁的觸發事件,但是這邊的項目需求是實時響應滾動事件的同時,還要對頁面元素進行重定位的DOM操作,由上述原因可知,在滾動過程中,頁面會停止一切關於DOM方面的操作,所以若使用 ontouchmove 去實現的話,在按住屏幕進行滑動的時候,屏幕會出現元素抖動的情況(事件觸發與DOM操作間具有幾十毫秒的時間差),兼容失敗
使用 iscroll 的probe版本,該版本能實時探查到滾動的距離,但該鉤子函數是實時去關注 requestAnimationFrame 下的狀態,所以對瀏覽器的版本性能消耗很大,加上 react 的 DOM 操作,安卓機根本動不了,兼容失敗
使用 swiper 插件,在啟動 freeMode 模式時模擬原生的彈性滾動( swiper 模擬原生滾動的方案能兼容較多的安卓機型不出現bug,), 因為 swiper 沒有實時監聽滾動位置的功能,故我監聽滾動開始及結束後的事件,通過 setInterval 及一些計算去實現滾動條的監聽,但因為 react 元素的變化量比較大,導致 swiper 在移動端時對父容器的計算速率達到了一個瓶頸,依舊出現很卡頓的現象,兼容失敗
fallback方案,安卓端使用原生onscroll實現,ios直接載入全部子元素,畢竟ios的性能方面還是比較好的,有更好的方案後續再更.