譚小芹
最好的方向就是學(xué)好H5之后然后再學(xué)習(xí)PHP,這樣能力能進(jìn)一步提高,這些學(xué)習(xí)完成后可以學(xué)習(xí)Linux,這些完成之后就可以獨(dú)立完成一些項(xiàng)目了。追問(wèn)
我是打算去培訓(xùn),看了兩個(gè)方向,一個(gè)h5全棧一個(gè)是php,不知道兩個(gè)哪個(gè)好點(diǎn)追答
如果是去培訓(xùn)的話,H5相對(duì)PHP沒(méi)有那么多邏輯思想,你要結(jié)合自身?xiàng)l件,如果設(shè)計(jì)思維比較好建議學(xué)h5,如果邏輯思維比較強(qiáng),建議學(xué)PHP,后續(xù)的市場(chǎng)價(jià)值是差不多的本回答被提問(wèn)者和網(wǎng)友采納
薩拉曼卡
沒(méi)法說(shuō)哪個(gè)好哪個(gè)不好 只要做好了都不錯(cuò)的
雨宮瑞穗
前端開(kāi)發(fā)和后臺(tái)開(kāi)發(fā)是有區(qū)別的,工作的內(nèi)容和負(fù)責(zé)的東西是完全的不同的,以下以網(wǎng)站的開(kāi)發(fā)為例。1、前端開(kāi)發(fā)前端開(kāi)發(fā)現(xiàn)在一般指的就是web前端開(kāi)發(fā)工程師,其負(fù)責(zé)是網(wǎng)站前端頁(yè)面也就是網(wǎng)頁(yè)的頁(yè)面開(kāi)發(fā),簡(jiǎn)單的說(shuō)網(wǎng)站前端負(fù)責(zé)是東西是網(wǎng)站用戶可見(jiàn)的東西,如網(wǎng)頁(yè)上的特效、網(wǎng)頁(yè)的布局、圖片、視頻等內(nèi)容。網(wǎng)站前端工程師的工作內(nèi)容就是將美工設(shè)計(jì)的效果圖的設(shè)計(jì)成瀏覽器可以運(yùn)行的網(wǎng)頁(yè),并和后端開(kāi)發(fā)工程師配合做網(wǎng)頁(yè)的數(shù)據(jù)顯示和交互。2、后端開(kāi)發(fā)后端開(kāi)發(fā)一般也叫做后臺(tái),其負(fù)責(zé)是網(wǎng)站后臺(tái)邏輯的設(shè)計(jì)和實(shí)現(xiàn)還有用戶及網(wǎng)站的數(shù)據(jù)的保存和讀取。比如一般網(wǎng)站都是有用戶注冊(cè)和登錄的,用戶的注冊(cè)的信息通過(guò)前端發(fā)送給后端,后端將其保存在數(shù)據(jù)庫(kù)中,用戶登錄網(wǎng)站的時(shí)候,后端需要通過(guò)用戶輸入的用戶名和密碼是否與數(shù)據(jù)庫(kù)中的一致來(lái)判斷用戶是否有權(quán)限登錄,這是后臺(tái)開(kāi)發(fā)中的一個(gè)最簡(jiǎn)單的功能。
孫策
PHP和web前端的關(guān)系嘛,粗略的講,一個(gè)是后臺(tái)(PHP),一個(gè)是前臺(tái)(web前端)。你可以先學(xué)PHP,再學(xué)web前端,也可以學(xué)了web前端,再學(xué)PHP。PHP是提供數(shù)據(jù)的,前端是獲取和處理、展示數(shù)據(jù)的。從學(xué)習(xí)的成本來(lái)講,PHP相對(duì)簡(jiǎn)單些,你只要學(xué)會(huì)PHP的語(yǔ)法,很簡(jiǎn)單的。還有SQL語(yǔ)句,你就可以去面試一個(gè)PHP初級(jí)開(kāi)發(fā)了。不像web前端,你html , css , js都得會(huì),而且還都得相對(duì)熟練才行。如果你是0基礎(chǔ)的,建議你去學(xué)PHP哦。如果你會(huì)編程什么的,建議你學(xué)web我之前是在上海黑馬程序員學(xué)的IT的,也是0基礎(chǔ)進(jìn)去的,現(xiàn)在工作一兩年薪資不錯(cuò)的,如果你要學(xué),可以去這家學(xué)校,也10多年的老牌子了,口碑也不錯(cuò),選擇了哪個(gè)就好好學(xué),加油?。?
向芳淑
首先,PHP 是服務(wù)器端語(yǔ)言,web 的語(yǔ)意描述比較含糊,因此,針對(duì)提問(wèn),以下提示供參考。網(wǎng)絡(luò)的應(yīng)用開(kāi)發(fā)范圍比較廣泛,單就網(wǎng)絡(luò)站點(diǎn)應(yīng)用開(kāi)發(fā),大致來(lái)說(shuō),可以分為前端開(kāi)發(fā)和后端開(kāi)發(fā)。前端開(kāi)發(fā)更注重于網(wǎng)頁(yè)元素的設(shè)計(jì),如網(wǎng)頁(yè)設(shè)計(jì)師、網(wǎng)頁(yè)美工、web前端開(kāi)發(fā)工程師等,需要掌握諸如:腳本語(yǔ)言(javascript/ajax和jquery)、DIV+CSS等。后端開(kāi)發(fā)更注重于網(wǎng)站的架構(gòu)、數(shù)據(jù)的訪問(wèn)等,需要掌握諸如:開(kāi)發(fā)語(yǔ)言(如 php、jsp、.NET等)、數(shù)據(jù)庫(kù)、SQL等。php 和 web 前端設(shè)計(jì)入門(mén)都不難,精通就需要付出努力了。而且兩者之間并不是互相隔離的,在 PHP 語(yǔ)言的編寫(xiě)過(guò)程中,也還是要其它方面的 web 知識(shí)。
金峰山
后端。
這里的前端是指的為訪問(wèn)者服務(wù)為目的的應(yīng)用,后端是管理、運(yùn)營(yíng)、數(shù)據(jù)挖掘等非面向訪問(wèn)者的東西。因?yàn)閜hp快速、易于部署,因此在前端具有比其他語(yǔ)言更大的優(yōu)勢(shì)(例如界面3個(gè)月?lián)Q一次),但是php畢竟是解釋型的,因此在穩(wěn)定(指需求變化小,很少重新編譯)而又復(fù)雜(指令密集)的情況下,運(yùn)行效率相對(duì)于編譯型的語(yǔ)言低而處于劣勢(shì)。
PHP是服務(wù)器端腳本語(yǔ)言,服務(wù)器端 != 后端,Client端 != 前端
夏元鼎
PHP靈活,上手快,易修改,發(fā)布快捷,缺點(diǎn)是容易犯錯(cuò)(常見(jiàn)如拼寫(xiě)錯(cuò)誤、SQL注入、上傳執(zhí)行等)、執(zhí)行效率不高、缺乏全局緩存。Java的優(yōu)點(diǎn)則是穩(wěn)定可靠、運(yùn)行效率高、不容易犯錯(cuò)(強(qiáng)類型、預(yù)編譯、必須攔截異常等等),缺點(diǎn)是開(kāi)發(fā)和發(fā)布的效率相對(duì)較低。這里這是相對(duì)而言,并不是說(shuō)PHP不能開(kāi)發(fā)大型web,也不是說(shuō)JAVA效率低,足夠經(jīng)驗(yàn)和能力的依然很高效。java和php都能做后臺(tái),php也可以做前端
元神
一個(gè)優(yōu)秀的WEB架構(gòu),必定會(huì)應(yīng)用一些分層設(shè)計(jì)的思想,這樣可以讓系統(tǒng)開(kāi)發(fā)起來(lái)更靈活,同時(shí)后期維護(hù)也比較方便。本文作者麥?zhǔn)嬖O(shè)計(jì)了一個(gè)前端與后端分離的架構(gòu),原文分享如下:看了《系統(tǒng)架構(gòu):Web應(yīng)用架構(gòu)的新趨勢(shì)—前端和后端分離的一點(diǎn)想法》 這篇文章,對(duì)前端與后端的分離非常認(rèn)同,這樣做對(duì)于系統(tǒng)的維護(hù)是有相當(dāng)大的好處的。正好自己也設(shè)計(jì)了一個(gè)這樣的系統(tǒng),于是把它拿出來(lái),和大家討論一下。這個(gè)架構(gòu),與其說(shuō)是想出來(lái),還不如說(shuō)是我做系統(tǒng)總結(jié)出來(lái)的最佳實(shí)踐。我們做的系統(tǒng),前端的頁(yè)面基本都是使用 JavaScript 的富戶端頁(yè)面,主要應(yīng)用的框架用,jquery、jquery ui、knockout js、Durandal、另外,還有自己封裝的一些 UI 組件,后端的主要采用到的技術(shù)有 OData、MVC、Linq to SQL 以及自己寫(xiě)的一個(gè)權(quán)限管理組件,數(shù)據(jù)庫(kù)采用的是 SQL Server 2005。下面向大家介紹一下各模塊的功能以及其劃分的目的,我們先從用戶界面看起吧一、關(guān)于前端的 dataProvider簡(jiǎn)單點(diǎn)說(shuō),就是一個(gè)給界面調(diào)用的數(shù)據(jù)訪問(wèn)層,很多人都人這樣的疑問(wèn),在這里加一個(gè)數(shù)據(jù)訪問(wèn)層,是不是多余?只要你做的前端,你都會(huì)碰到下面這些問(wèn)題:1、一個(gè)產(chǎn)品或者項(xiàng)目,前端與后端是同時(shí)進(jìn)行了,這時(shí)候,根本沒(méi)有后端的接口,甚至可以說(shuō),連個(gè)接口的定義都沒(méi)有。作為前端開(kāi)發(fā)人員,你如何去開(kāi)展自己的工作?2、作為前端開(kāi)發(fā)人員,你有沒(méi)有碰到,因?yàn)楹蠖说慕涌趻斓?,?dǎo)致你的工作沒(méi)法繼續(xù)做下去的情形?3、作為前端開(kāi)發(fā)人員,往往免不了要和第三方的接口進(jìn)行對(duì)接,你有沒(méi)有碰到過(guò),和你做對(duì)接的人員,突然因?yàn)轫?xiàng)目緊,被抽走了,留給你的只有一堆需要傳N個(gè)參數(shù),傳了后接著出“對(duì)象為空”的異常呢?你根本不知道哪里參數(shù)傳錯(cuò)了。面對(duì)這些接口,你除了破口大罵,得不到任何幫助。4、作為前端開(kāi)發(fā)人員,你有沒(méi)有試過(guò),你向后端的開(kāi)發(fā)組,要一個(gè)接口,他們需要討論個(gè)幾天,然后再花幾天才能給你,給你之后,還不能用,又得再花幾天時(shí)間調(diào)試呢?如果你向我一樣,都曾經(jīng)都碰過(guò)這些問(wèn)題,你就不會(huì)懷疑這個(gè) dataProvider 存在的必要了,有了這個(gè) dataProvider,可以最大減少后端接口對(duì)前端開(kāi)發(fā)的影響。下面是一個(gè) dataProvider 的實(shí)例:var dataProvider = (function () {var fakeProvider = {countries: new Countries()};var realProvider = {countries: new JData.WebDataSource()};//下面的接口,根據(jù)情況二選一return fakeProvider; //這個(gè)是假的 dataProvider,從本地讀return realProvider; //這個(gè)是真正 dataProvider,從接口讀})();從上面可以看出來(lái),這個(gè) dataProvider 使用了工廠模式來(lái)創(chuàng)建,它有兩個(gè)實(shí)例,fakeProvider和realProvider,fakeProvider是用來(lái)提供一些模擬數(shù)據(jù),而realProvider提供從接口讀取出來(lái)的數(shù)據(jù)。當(dāng)沒(méi)有接口,或者接口掛掉,我們可以先從 fakeProvider 來(lái)讀取數(shù)據(jù)。等接口好了,切換到 realProvider 。二、關(guān)于用戶界面輸入的驗(yàn)證1、數(shù)據(jù)的驗(yàn)證。用戶在界面輸入數(shù)據(jù)后,接著調(diào)用 dataProvider 里的接口對(duì)數(shù)據(jù)進(jìn)行處理,但是在向服務(wù)端提交之前,得先對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證。那個(gè)這個(gè)驗(yàn)證如何進(jìn)行呢?dataProvider先從服務(wù)端獲實(shí)體的描述信息,這些描述包括但不限于:主外鍵、屬性的驗(yàn)證信息(比如是否可空),當(dāng)然,這個(gè)實(shí)體信息是可以緩存起來(lái),以便重用的。然后 dataProvider 再根據(jù)這個(gè)描述信息來(lái)對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證。2、錯(cuò)誤信息的顯示當(dāng)驗(yàn)證到某一個(gè)屬性不合法,驗(yàn)證信息的模塊就在頁(yè)面查找出對(duì)應(yīng)輸入控件,它是怎么查找的呢?比如說(shuō),Contry 的 Name 輸入為空是不可以的。那它就先查找 id 為Coutry的元素,然后再Coutry元素下面再找id 或者 name 為 Name 的控件,如果找不到則直接彈窗顯示錯(cuò)誤信息。例如:<form id="Country"><input name="Name"/></form>三、關(guān)于后端使用 OData1、作為后端開(kāi)發(fā)人員,你有沒(méi)有碰到過(guò)這種前端開(kāi)發(fā)人員,今天讓你加一個(gè)字段,好,加了,然后打包發(fā)布。明天又讓你加一個(gè)字段。后天突然又說(shuō),前兩天加的字段,不需要,你會(huì)不會(huì)有種想喊“操”的沖動(dòng)?2、作為后端開(kāi)發(fā)員員,你有沒(méi)有碰到過(guò)這種前端開(kāi)發(fā)人員,今天跟你說(shuō)接口不夠用,要加個(gè) GetUserByName 的方法,明天又說(shuō),還得加個(gè) GetUserByEmail 的方法?然后,過(guò)了一段時(shí)間,你發(fā)現(xiàn)接口越來(lái)越多,維護(hù)的模塊越來(lái)越癰腫,并且這些接口,你只敢加,不敢刪除。因?yàn)椋愀静恢肋@些,有哪個(gè)不用的,你跑去問(wèn)前端,他也回答不出來(lái)。所以一些接口哪怕是沒(méi)用的,也只能永遠(yuǎn)系統(tǒng)里,直到它生命周期的結(jié)束。如果你也碰到類似于我這種煩惱,使用 OData 也許是一個(gè)不錯(cuò)的選擇,把查詢的權(quán)限都開(kāi)發(fā)給前端的開(kāi)發(fā)人員,他愛(ài)怎么查就怎么查,都由它去。四、關(guān)于后端使用MVC我們的系統(tǒng),使用MVC都是用來(lái)處理從前端提交上來(lái)的數(shù)據(jù)的,使用它主要是開(kāi)發(fā)人員都熟悉MVC,然后MVC再調(diào)用業(yè)務(wù)層代碼,同時(shí),還需要處理:1、對(duì)提交上來(lái)的數(shù)據(jù)進(jìn)行驗(yàn)證2、處理系統(tǒng)的異常,包括對(duì)異常進(jìn)行重新的包裝,再傳回到客戶端,以便于客戶端的處理。對(duì)異常的信息進(jìn)行記錄。五、數(shù)據(jù)訪問(wèn)層關(guān)于數(shù)據(jù)訪問(wèn)層,在我們的系統(tǒng)里實(shí)際是一個(gè) ORM 的包裝器(ORM Wrapper),你在對(duì) ORM 裹上一層外衣。目的在于:1、對(duì)數(shù)據(jù)進(jìn)行攔截。例如:有些數(shù)據(jù),只對(duì)某個(gè)角色的開(kāi)發(fā)。數(shù)據(jù)訪問(wèn)層需要對(duì)根據(jù)過(guò)濾條件,然后再結(jié)合查詢條件,重新生成SQL。2、對(duì)數(shù)據(jù)假刪除的處理。見(jiàn)過(guò)很多系統(tǒng),都是把刪除放到業(yè)務(wù)層來(lái)進(jìn)行的,其實(shí)這是不適合的,從業(yè)務(wù)的角度來(lái)說(shuō),關(guān)心的是刪除,在執(zhí)行刪除后,這條數(shù)據(jù)從我眼前消失就可以了。至真刪除還是假刪除,這與我無(wú)關(guān)。數(shù)據(jù)訪問(wèn)層,要做的就是這工作,它可以數(shù)據(jù)在真刪除與假刪除之間進(jìn)行切換,只要配置一下,就可以把真刪除變成假刪除(其實(shí)就是把Delete操作變成Update操作),使得進(jìn)行業(yè)務(wù)開(kāi)發(fā)人員,不用再關(guān)心數(shù)據(jù)的真假刪除。3、對(duì)數(shù)據(jù)進(jìn)行跟蹤、備份。你肯定碰到過(guò)這么一種需要,需要記下來(lái),每一次的更新操作的時(shí)間,以及更新了些什么內(nèi)容。對(duì)于刪除的數(shù)據(jù),能夠把它還原回來(lái)。數(shù)據(jù)訪問(wèn)層,通過(guò)對(duì) ORM進(jìn)行包裝,完全可以記錄下每一次更新、刪除這些操作,然后記錄下來(lái)即可。當(dāng)然,這些需求利用數(shù)據(jù)提供的功能也是可以實(shí)現(xiàn)的,不在討論的范圍內(nèi)。本回答被網(wǎng)友采納
周士群
主要是兩種方式,第一用表單把數(shù)據(jù)傳遞給PHP,第二用Ajax把數(shù)據(jù)傳遞給PHP。