整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          JavaScript與PHP到底有何不同?

          51CTO.com快譯】JavaScript與PHP,都是目前人氣較高的兩款編程語(yǔ)言。PHP是基于C語(yǔ)言而打造,因此非常適合有C語(yǔ)言基礎(chǔ)的開(kāi)發(fā)者。事實(shí)上,兩種語(yǔ)言對(duì)于新手程序員來(lái)說(shuō)都是比較容易上手的,而且它們都具備出色的靈活性與可擴(kuò)展性。

          那么,它們到底有何不同?

          1.PHP能更輕松地實(shí)現(xiàn)定制化目標(biāo):

          重構(gòu)與定制化能力是決定編程語(yǔ)言命運(yùn)的兩大重要因素。PHP是開(kāi)放源代碼軟件,意味開(kāi)發(fā)者可以根據(jù)社區(qū)需求進(jìn)行修改,而非立足單個(gè)開(kāi)發(fā)者的需求,也正是它的開(kāi)源特性使得PHP更為靈活也更加適用。憑借著這一點(diǎn)PHP能獲得很多開(kāi)發(fā)者的支持的原因之一。Comiconverse公司CEO透露稱,“我們更樂(lè)于利用PHP開(kāi)發(fā)網(wǎng)站,因?yàn)槲覀兡軌蜉p松做出自己需要的變更。JavaScript雖然也很實(shí)用,但開(kāi)發(fā)者能夠利用PHP更輕松地實(shí)現(xiàn)定制化目標(biāo)。”

          需要注意的是,PHP在這方面僅僅是略有優(yōu)勢(shì)。JavaScript同樣可以根據(jù)實(shí)際需求進(jìn)行重構(gòu)與定制,只不過(guò)在效率上不及PHP。

          2.各方面對(duì)比:

          • 上手難度:js完全oop相對(duì)PHP更容易理解一些,但是文檔不如PHP完善,而且語(yǔ)言更新運(yùn)營(yíng)還解析引擎不是一家,沒(méi)辦法寫(xiě)清底層原理。那也是js上手簡(jiǎn)單一些,起碼不用搭環(huán)境選版本

          • 特性:js是事件驅(qū)動(dòng)的,很靈活但是也很坑,調(diào)試起來(lái)比較困難(曾經(jīng)被吭哭),而PHP的特性就比較混亂了,組件很多。雙方特性各有優(yōu)點(diǎn),PHP的引用傳遞,js的萬(wàn)物皆對(duì)象。平均水平j(luò)s贏,整天實(shí)力PHP贏。

          • 功能:要說(shuō)功能強(qiáng)大,很明顯,js暫時(shí)還比不上PHP,而且客戶端js被限制了很多,比如跨域,ajax寫(xiě)入,文件讀取什么的。

          • 開(kāi)發(fā)難度:其實(shí)都不難,但是PHP比較依賴文檔還搜索引擎,因?yàn)槊麊?wèn)題很難記住,這一點(diǎn)js做的就比較好了,尤其是正則表達(dá)式部分。

          • 語(yǔ)義:個(gè)人比較看重的一點(diǎn)就是語(yǔ)言的語(yǔ)義性,這一點(diǎn)js的完全對(duì)象化占很大的優(yōu)勢(shì),調(diào)用屬性或方法.和[]語(yǔ)義性特別強(qiáng),而PHP這方面就比較謹(jǐn)慎,限制的比較嚴(yán)格。但是js也有一個(gè)語(yǔ)義部分很糟糕的部分,就是下面這個(gè)

          • 注釋:PHP有相當(dāng)完善的注釋系統(tǒng),而且各個(gè)IDE支持的非常好,當(dāng)PHP作為核心驅(qū)動(dòng)的時(shí)候代碼提示和注釋非常給力。反觀js大多以編輯器為主,作為驅(qū)動(dòng)也是最近不久,所以注釋方面不如PHP完善。


          3.開(kāi)發(fā)大型Web應(yīng)用中,JavaScript有明顯優(yōu)勢(shì)

          兩種語(yǔ)言都能用于開(kāi)發(fā)大型Web應(yīng)用,但JavaScript在這一領(lǐng)域擁有明顯優(yōu)勢(shì)。如之前所提到,專用服務(wù)器能夠更好地托管JavaScript用例,因此其更適合用于大型Web應(yīng)用開(kāi)發(fā)。


          4.PHP是一種更為年輕的語(yǔ)言,因此傳統(tǒng)企業(yè)更傾向于選擇JavaScript。

          如果是在小型企業(yè)工作的開(kāi)發(fā)人員,他們通常會(huì)使用PHP。但如果在大型企業(yè)或者是傳統(tǒng)企業(yè),那么JavaScript會(huì)是系統(tǒng)與項(xiàng)目中的普及度更高的語(yǔ)言。PHP是一種更為年輕的語(yǔ)言,因此傳統(tǒng)企業(yè)更傾向于選擇JavaScript,以簡(jiǎn)化IT部門內(nèi)部的管理工作。

          同樣需要強(qiáng)調(diào)的是,JavaScript是一種認(rèn)證的付費(fèi)語(yǔ)言。這意味著大家可以考取JavaScript相關(guān)資質(zhì)認(rèn)證,而PHP則不行。另外,如果學(xué)PHP,最后你還得學(xué)javascript,因?yàn)楝F(xiàn)在PHP 只會(huì)后端不會(huì)前端,很難找到工作。


          5.不可一概而論

          正如很多程序員所言,我們沒(méi)辦法將二者進(jìn)行簡(jiǎn)單比較,因?yàn)樗鼈兊挠猛静⒉灰粯印HP是一種服務(wù)器端腳本語(yǔ)言,而JavaScript則是一種面向桌面與服務(wù)器端的通用型語(yǔ)言。這意味著程序員能夠利用JavaScript完成更為廣泛的應(yīng)用目標(biāo)。


          6.總結(jié)——應(yīng)該如何選擇?

          選擇哪款語(yǔ)言,取決于您的協(xié)作對(duì)象以及使用目的。在理想情況下,大家最好能同時(shí)掌握兩者。如果非要選擇其一,那么PHP應(yīng)該能夠憑借著開(kāi)源特性、更多支持選項(xiàng)以及靈活的可塑性小幅勝出。

          當(dāng)然,這只是我的個(gè)人見(jiàn)解。您對(duì)此有何看法?請(qǐng)?jiān)谠u(píng)論中與我們分享。


          原文鏈接:https://dzone.com/articles/javascript-vs-php-whats-the-difference

          原文標(biāo)題:JavaScript vs. PHP: What's the Difference?

          原文作者:Carol Jon

          【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

          者 | Brent

          譯者 | 張?zhí)m月

          這篇文章不在于解決關(guān)于 PHP 的那個(gè)永恒話題,而是想讓你了解,PHP 在這些年的進(jìn)展以及那些值得關(guān)注的特性與發(fā)展現(xiàn)狀。

          之前,有一篇非常流行的博客文章是“PHP:那些糟糕的設(shè)計(jì)”,第一次讀到這篇博客的時(shí)候,我正在一個(gè)非常破舊的地方工作,處理著許多 PHP 遺留項(xiàng)目。這篇博客對(duì)我觸動(dòng)很深,我開(kāi)始思考是否要停止編程,換一份完全不同的工作。文章地址:

          https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/

          幸運(yùn)的是,很快我就換了一份工作,而 PHP 在 5.X 版本之后又有了很多新的改進(jìn)。今天,我要向那些不再使用 PHP 編程,或者陷入遺留項(xiàng)目的人致敬。

          劇透:直到今天,PHP 仍有很多糟糕的東西,例如許多核心功能仍然存在不一致的方法簽名,仍然存在令人混淆的配置設(shè)置,仍然會(huì)有一些開(kāi)發(fā)者因?yàn)橹R(shí)的缺乏而導(dǎo)致寫(xiě)的代碼很糟糕等等。

          但是,本文我想把目光集中在 PHP 已經(jīng)改進(jìn)的地方上面,以及如何寫(xiě)出更加干凈和易維護(hù)的 PHP 代碼。也許你不會(huì)改變對(duì) PHP 的看法,但很有可能,你會(huì)驚訝于過(guò)去幾年 PHP 的進(jìn)步。

          要 點(diǎn)

          • PHP 每年都會(huì)推出一個(gè)新的版本;
          • 自 PHP 5 代之后,其性能不斷提升;
          • 有框架、包和平臺(tái)組成的活躍生態(tài)系統(tǒng);
          • 過(guò)去幾年間,PHP 添加了許多新的特性,且現(xiàn)在仍在持續(xù)演進(jìn);
          • 許多工具如靜態(tài)分析器也越發(fā)成熟,未來(lái)也將繼續(xù)發(fā)展。

          更新:很多人希望我能夠展示一下實(shí)際代碼,這是我其中一個(gè)業(yè)余項(xiàng)目的源代碼,它是用 PHP 和 Laravel 寫(xiě)的,另外還有一個(gè)是我們?cè)谵k公室負(fù)責(zé)維護(hù)的上百個(gè) OSS 包的列表。

          • https://github.com/brendt/aggregate.stitcher.io
          • https://spatie.be/open-source/packages

          回顧歷史

          讓我們先快速回顧一下 PHP 的版本發(fā)布周期。現(xiàn)在 PHP 的版本是 7.3,預(yù)計(jì) 2019 年末將發(fā)布 PHP 7.4,7.4 之后的版本將會(huì)是 PHP 8.0。

          從 5.X 版本之后,PHP 核心團(tuán)隊(duì)一直在努力每年發(fā)布一個(gè)新版本,并且在過(guò)去的 4 年間,這一目標(biāo)一直完成得很好。

          大致來(lái)說(shuō),每個(gè)新版本都會(huì)用 2 年時(shí)間進(jìn)行積極地支持,然后用一年進(jìn)行“安全修補(bǔ)”工作。這樣做的目的是促使 PHP 開(kāi)發(fā)者盡可能保持最新?tīng)顟B(tài),例如每年都升級(jí)比從 5.4 直接跳到 7.0 要簡(jiǎn)單得多。

          PHP 具體的版本發(fā)布情況,可以查看:

          https://www.php.net/supported-versions.php

          搞清楚 PHP 的發(fā)展歷程后,我們來(lái)談?wù)劥蠹覍?duì) PHP 的常見(jiàn)誤解。

          PHP 的性能

          在 5.X 版本時(shí)代,PHP 的性能平均而言是最好的。而在 7.0 時(shí)代,大部分的 PHP 核心都從零開(kāi)始重寫(xiě)了,其性能能夠達(dá)到之前的 2-3 倍。口說(shuō)無(wú)憑,幸運(yùn)的是,有人花了大量時(shí)間來(lái)測(cè)量 PHP 的性能,Kinsta 提供了一個(gè)很好的更新列表。

          從 7.0 版本以來(lái),PHP 性能就只升不降。PHP web 應(yīng)用的性能可以和其他語(yǔ)言 web 框架的性能相提并論,甚至更高。具體測(cè)試情況可查看:

          https://github.com/the-benchmarker/web-frameworks

          當(dāng)然,PHP 框架的性能還無(wú)法超越 C 和 Rust,但是要比 Rails 或 Django 好,且能夠和 ExpressJS 相媲美。

          框架和生態(tài)系統(tǒng)

          在談到框架時(shí),PHP 已經(jīng)不再只是 WordPress 了。作為職業(yè)的 PHP 開(kāi)發(fā)者,我認(rèn)為,WordPress 無(wú)法從任何層面代表當(dāng)今的生態(tài)系統(tǒng)。

          總體來(lái)說(shuō),有 2 個(gè)主要的 web 應(yīng)用框架以及一些相對(duì)而言較小的框架,如 Symfony 和 Laravel。除此之后,還有 Zend、Yii、Cake、 Code Igniter 等等。

          如果你想了解現(xiàn)代 PHP 開(kāi)發(fā)究竟是什么樣子,那么就需要掌握 Symfony 和 Laravel 中的一個(gè),這 2 個(gè)框架都有龐大的生態(tài)系統(tǒng),包含各種包和產(chǎn)品。從管理面板和客戶關(guān)系管理系統(tǒng) (CRM) 到單獨(dú)的包,從持續(xù)集成 (CI) 到性能監(jiān)視工具,我們有無(wú)數(shù)的服務(wù)如 web 套接字服務(wù)器、隊(duì)列管理器、支付集成等等。

          但是,這些框架都是為實(shí)際開(kāi)發(fā)而設(shè)計(jì)的。如果你需要純粹的內(nèi)容管理,WordPress 和 CraftCMS 是理想選擇,而且它們還會(huì)不斷優(yōu)化。

          衡量 PHP 生態(tài)系統(tǒng)目前狀態(tài)的方法是看一看 Packagist,它是 PHP 主要的包倉(cāng)庫(kù)。在過(guò)去的時(shí)間里,它呈現(xiàn)出了指數(shù)式增長(zhǎng)的態(tài)勢(shì),每天 2500 萬(wàn)左右的下載量,足以說(shuō)明 PHP 生態(tài)系統(tǒng)已經(jīng)不再是過(guò)去那種弱者了。

          Packagist 網(wǎng)站上列出了過(guò)去的包和版本數(shù)量:


          除了應(yīng)用框架和內(nèi)容管理系統(tǒng) (CMS) 以外,我們還發(fā)現(xiàn),在過(guò)去幾年,異步框架也崛起了。

          異步框架是指用 PHP 或其它語(yǔ)言編寫(xiě)的框架和服務(wù)器,它們能夠讓用戶運(yùn)行真正異步的 PHP。異步框架的例子包括:Swoole、Amp 和 ReactPHP。

          由于我們已經(jīng)進(jìn)入異步領(lǐng)域,具有大量 IO 的 web 套接字和應(yīng)用等東西在 PHP 世界中就變得非常重要。

          另外,人們還談到了內(nèi)部郵件列表,在郵件列表中,PHP 核心開(kāi)發(fā)者討論了 PHP 語(yǔ)言的進(jìn)一步發(fā)展,例如增加 libuv 到核心之中。對(duì)于不熟悉 libuv 的人來(lái)說(shuō),libuv 同 Node.js 用于實(shí)現(xiàn)其所有異步性的庫(kù)一模一樣。

          語(yǔ)言本身

          盡管異步 (async) 和等待 (await) 還未面市,但 PHP 在過(guò)去幾年已經(jīng)經(jīng)過(guò)了許多改進(jìn),下面便是 PHP 新特性的不完全列表:

          • 短閉包
          • https://stitcher.io/blog/short-closures-in-php
          • 空合并運(yùn)算符
          • https://stitcher.io/blog/shorthand-comparisons-in-php#null-coalescing-operator
          • Traits
          • https://www.php.net/manual/en/language.oop5.traits.php
          • 屬性類型
          • https://stitcher.io/blog/new-in-php-74#typed-properties-rfc
          • 擴(kuò)散運(yùn)算符
          • https://wiki.php.net/rfc/argument_unpacking
          • JIT 編譯器
          • https://wiki.php.net/rfc/jit
          • FFI
          • https://wiki.php.net/rfc/ffi
          • 匿名類
          • https://www.php.net/manual/en/language.oop5.anonymous.php
          • 聲明返回類型
          • https://www.php.net/manual/en/functions.returning-values.php#functions.returning-values.type-declaration
          • 現(xiàn)代密碼學(xué)
          • https://wiki.php.net/rfc/libsodium
          • Generators
          • https://wiki.php.net/rfc/generators
          • 其他
          • https://www.php.net/ChangeLog-7.php

          盡管我們的主題是 PHP 的語(yǔ)言特性,但我還是覺(jué)得需要談一下 PHP 語(yǔ)言的開(kāi)發(fā)流程。雖然社區(qū)被允許提出 RFC,但仍有一個(gè)活躍的志愿者核心團(tuán)隊(duì)在推動(dòng) PHP 的發(fā)展。在添加一個(gè)新的語(yǔ)言特性之前,必須要進(jìn)行投票。只有獲得 2/3 多數(shù)選票的 RFC 才能被添加到核心中。

          大約有 100 個(gè)人可以投票,但你不需要給每個(gè) RFC 投票。核心團(tuán)隊(duì)的成員毋庸置疑能夠投票,因?yàn)樗麄儽仨毦S護(hù)代碼庫(kù)。除了他們以外,還有一群人是單獨(dú)從 PHP 社區(qū)中挑選出來(lái)的,這些人員包括 PHP 文件的維護(hù)人員,PHP 整體項(xiàng)目的貢獻(xiàn)者,以及 PHP 社區(qū)中頗具威望的開(kāi)發(fā)者。

          雖然大多數(shù)核心開(kāi)發(fā)是由志愿者組成的,但其中一名核心 PHP 開(kāi)發(fā)者 Nikita Popov 近期被 JetBrains 雇傭,并全職負(fù)責(zé)該語(yǔ)言的開(kāi)發(fā)。另外一個(gè)例子是 Linux 基金會(huì)決定投資 Zend 框架。上述這些雇傭和收購(gòu)行為確保了未來(lái) PHP 開(kāi)發(fā)的穩(wěn)定性。

          工 具

          除了核心本身,我們還目睹了過(guò)去幾年間工具的增長(zhǎng)。首先進(jìn)入我腦海的是靜態(tài)分析器如 Vimeo 發(fā)明的 Psalm,以及 Phan 和 PHPStan。

          這些工具能夠靜態(tài)分析 PHP 代碼,并且報(bào)告打字錯(cuò)誤、可能的 bug 等等。在某些方面,它們提供的功能足以和 TypeScript 相媲美,但目前 PHP 還沒(méi)有被轉(zhuǎn)編譯 (transpile),因此它并不支持定制句法。

          雖然這意味著我們必須依賴于文檔塊,但 PHP 的最初發(fā)明者 Rasmus Lerdorf 提出了將靜態(tài)分析引擎添加到核心之中的想法。這個(gè)想法潛力巨大,但任務(wù)量著實(shí)不小。

          提到轉(zhuǎn)編譯,由于受到 JavaScript 社區(qū)的啟發(fā),有許多人試圖將 PHP 句法延伸到用戶空間中。一個(gè)名叫 Pre 的項(xiàng)目就做了這件事情:它支持新的已經(jīng)轉(zhuǎn)編譯為普通 PHP 代碼的 PHP 句法。

          雖然這一想法已經(jīng)在 JavaScript 中得以實(shí)現(xiàn),但只有在提供了適當(dāng)?shù)募砷_(kāi)發(fā)環(huán)境 (IDE) 和靜態(tài)分析支持后,它才能在 PHP 工作。這一想法非常有趣,但還必須不斷完善,才能變成“主流”。

          結(jié)束語(yǔ)

          盡管 PHP 還有很多缺點(diǎn)和遺留問(wèn)題,但我可以充滿信心地說(shuō),我喜歡使用它。就我的經(jīng)驗(yàn)來(lái)看,它可以創(chuàng)建可靠、可維護(hù)和高質(zhì)量的軟件。如果使用得當(dāng),PHP 對(duì)于 web 開(kāi)發(fā)來(lái)說(shuō)是個(gè)非常棒的選擇。

          英文原文

          https://stitcher.io/blog/php-in-2019


          彩蛋一

          新浪微博是國(guó)內(nèi)使用 PHP 語(yǔ)言的代表之一,前新浪微博首席架構(gòu)師惠新宸就是 PHP 開(kāi)發(fā)組的核心成員。2016 年,InfoQ 編輯約稿了新浪微博,分享了新浪微博的 PHP 7 升級(jí)實(shí)踐以及選型思路。文章年代雖然較為久遠(yuǎn)了,但背后的思路和實(shí)踐細(xì)節(jié)依舊值得參考,感興趣的同學(xué)可以在 InfoQ 公眾號(hào)對(duì)話框回復(fù)關(guān)鍵詞:PHP,獲取文章詳情。

          請(qǐng)?jiān)?InfoQ 公眾號(hào)對(duì)話框回復(fù)關(guān)鍵詞,留言區(qū)回復(fù)無(wú)法接收的喲!

          彩蛋二

          QCon 全球軟件開(kāi)發(fā)大會(huì)廣州站正在火熱進(jìn)行中,我們?yōu)?InfoQ 的讀者匯總了大會(huì) PPT,回復(fù)關(guān)鍵詞:PPT,即可下載!

          多數(shù)PHP程序都使用HTML表單從用戶那里獲取數(shù)據(jù)并計(jì)算結(jié)果。

          HTML表單的一些基本原則

          • 選擇適合于收集的數(shù)據(jù)類型和提供交互方式的控件。
          • 清楚標(biāo)記每一個(gè)控件,這樣用戶就可以理解其功能。
          • 盡可能將標(biāo)簽對(duì)齊。將控件的左邊緣對(duì)齊。
          • 將相關(guān)的標(biāo)簽分組,并且通過(guò)設(shè)計(jì)中使用空白將每一個(gè)分組分開(kāi)。
          • 表單上的控件順序應(yīng)該類似于用戶操作他們的順序。

          創(chuàng)建基本HTML表單

          首先創(chuàng)造一個(gè)基本的HTML大綱,包含表單控件;然后將控件進(jìn)行合并(HTML表單必須包括一個(gè)提交按鈕,用戶單擊它可以將表單數(shù)據(jù)發(fā)送到服務(wù)器。)一個(gè)單獨(dú)的HTML頁(yè)面可以包含多個(gè)表單。

          • 創(chuàng)建HTML結(jié)構(gòu)

          包含表單的HTML結(jié)構(gòu)和和普通的HTML結(jié)構(gòu)一樣。

          <HTML>
            <HEAD>
            <TITLE>標(biāo)題放在這</TITLE>
            </HEAD>
          <BODY>
            表單頁(yè)面放在這
            </BODY>
            </HTML>

          在包含表單的HTML頁(yè)面中可以使用任何HTML標(biāo)簽。基本的表單使用FROM標(biāo)簽來(lái)說(shuō)明。該標(biāo)簽中METHOD屬性接收GET或POST兩個(gè)值中的一個(gè)。ACTION屬性子明PHP腳本的url,該腳本可以收集通過(guò)表單收集的數(shù)據(jù),可以是絕對(duì)路徑或者相對(duì)路徑

          <FORM METHOD="method" ACTION="url"> 
            中間可以放置表單控件
            </FORM>
          • 合并控件

          兩個(gè)常用的基本控件:文本框和提交按鈕。

          文本框:允許用戶鍵入信息以發(fā)送給PHP腳本。NAME屬性為文本提供名稱,PHP腳本可以通過(guò)名稱準(zhǔn)確訪問(wèn)其內(nèi)容,因此它應(yīng)該是唯一的且符合PHP變量命名規(guī)則(但不需要$符號(hào)),單標(biāo)簽。VALUE屬性指明出現(xiàn)在提交按鈕上面的標(biāo)題。創(chuàng)建方式如下:

          <INPUT TYPE = "TEXT" NAME="text">

          提交按鈕:允許用戶將一個(gè)表單的內(nèi)容發(fā)送到服務(wù)器,一個(gè)HTML表單對(duì)應(yīng)應(yīng)該有一個(gè)提交按鈕。

          示例:一個(gè)完整的HTML表單。

          <HTML>
            <HEAD>
            <TITLE>標(biāo)題</TITLE>
            </HEAD>
          <BODY>
          <FORM METHOD="POST" ACTION="phpinfo.php">
          <INPUT TYPE="TEXT" NAME="user_name">
          <BR/>
          <BR/>
          <INPUT TYPE="TEXT" NAME="user_email">
          <BR/>
          <BR/>
          <INPUT TYPE="SUBMIT" VALUE="Send the Data">
          </FORM>
            </BODY>
            </HTML>


          • 使用多個(gè)表單

          可以在一個(gè)HTML頁(yè)面中包含多個(gè)表單,注意下一個(gè)表單的FORM開(kāi)始之前需要結(jié)束前一個(gè)FORM表單。

          <HTML>
            <HEAD>
            <TITLE>標(biāo)題</TITLE>
            </HEAD>
          <BODY>
            
          <FORM METHOD="POST" ACTION="phpinfo.php">
          <INPUT TYPE="TEXT" NAME="user_name">
          <BR/>
          <BR/>
          <INPUT TYPE="TEXT" NAME="user_email">
          <BR/>
          <BR/>
          <INPUT TYPE="SUBMIT" VALUE="Send the Data">
          <BR/>
          <BR/>
          </FORM>
          
          <FORM METHOD="POST" NAME="phpinfo.php">
          <INPUT TYPE="TEXT" NAME="user_name1">
          <BR/>
          <BR/>
          <INPUT TYPE="TEXT" NAME="user_email1">
          <BR/>
          <BR/>
          <INPUT TYPE="SUBMIT" VALUE="Send the Data1">
          </FORM>
          
            </BODY>
            </HTML>


          創(chuàng)建表單控件

          • 創(chuàng)建自定義的文本框

          文本框的屬性中,TYPE和NAME是必須的,其余是可選屬性。SIZE屬性用于設(shè)置文本框的可視大小;MAXLENGTH指明用戶鍵入字符的最大長(zhǎng)度;VALUE給出了一個(gè)最初顯示在文本框中的值。

          <input type="text" name="" size="" maxlength="" value="">
          • 創(chuàng)建文本區(qū)域

          文本區(qū)域可以輸入多行文本。NAME和ROWS屬性是必須的。ROWS屬性表明了文本區(qū)域內(nèi)可以看到的文本行數(shù),充滿時(shí)會(huì)滾動(dòng)。COLS屬性指明可見(jiàn)文本列數(shù)與行數(shù)類似。WRAP屬性指明文本區(qū)域內(nèi)單詞換行的方式,可以指定如下值。該標(biāo)簽為雙標(biāo)簽。

          說(shuō)明

          off

          禁止單詞換行但用戶可以輸入換行符強(qiáng)制換行

          virtual/soft

          各行顯示為換行,但是換行并沒(méi)有被發(fā)送到服務(wù)器

          physica/hard

          啟用了單詞換行

          <inputarea name="" rows="" cols="" wrap="">
          • 創(chuàng)建密碼框

          創(chuàng)建密碼框的語(yǔ)法與文本框相同,但要將TYPE屬性指定為PASSWORD而不是TYPE。

          <input type="password" name="" size="" maxlength="" value="">
          • 創(chuàng)建復(fù)選框

          取兩個(gè)值中的一個(gè),即二選一。TYPE屬性是必須的,checked屬性出現(xiàn),該復(fù)選框默認(rèn)情況會(huì)被選定。value屬性指定復(fù)選框被選定情況下被發(fā)送到服務(wù)器的值,默認(rèn)發(fā)送on值。法如下:

          <input type="checkbox" name="" checked value="">
          • 創(chuàng)建單選按鈕

          語(yǔ)法與復(fù)選框?qū)傩院x相同,但是TYPE屬性的值必須是RADIO,NAME屬性是必須的。

          <input type="radio" name="" checked value="">
          • 創(chuàng)建列表框

          用戶可以選擇一個(gè)或者多個(gè)選項(xiàng),它是一個(gè)滾動(dòng)菜單。

          <select name="" multipile size="">options go here</select>

          name屬性是必須的,multipile屬性指明用戶可以通過(guò)按下crtl鍵并單擊多個(gè)選項(xiàng)來(lái)選擇它們

          列表框的單選行為可作為單選按鈕。

          <option selected value="text"></options>
          • 創(chuàng)建隱藏域
          <input type="hidden" name="text"value="">
          • 實(shí)現(xiàn)上傳文件的HTML表單
          <input type="FILE" name="name" accept="time" value="text">

          其中type屬性是必須的。格式通過(guò)使用MIME碼指定。常用的格式如下:


          超文本標(biāo)記語(yǔ)言文本 .html,.html text/html

            普通文本 :txt text/plain

            word文檔:application/msword

            RTF文本 :rtf application/rtf

            GIF圖形 :gif image/gif

            JPEG圖形 :jpeg,

            jpg: image/jpeg

            au聲音文件:au audio/basic

            MIDI音樂(lè)文件 :mid,.midi audio/midi,audio/x-midi

            RealAudio音樂(lè)文件 .ra, .ram audio/x-pn-realaudio

            MPEG文件 .mpg,.mpeg video/mpeg

            AVI文件 .avi video/x-msvideo

            GZIP文件 .gz application/x-gzip

            壓縮文件.rar application/octet-stream

            壓縮文件.zip application/x-zip-compressed

            TAR文件 .tar application/x-tar


          更多提交表單的信息

          • 使用圖像提交數(shù)據(jù)
          <input type="image" src="url" name="text" align="align">
          • 創(chuàng)建重置按鈕
          <input type="reset" value="text">

          主站蜘蛛池模板: 久久99国产精一区二区三区| 亚洲熟女乱色一区二区三区| 国产伦一区二区三区免费| 国产成人久久精品一区二区三区| 一区二区三区波多野结衣| 一区二区和激情视频| 精品国产一区二区三区免费看| 3d动漫精品啪啪一区二区中文| 无码欧精品亚洲日韩一区| 亚洲一区中文字幕在线电影网| 亚洲高清一区二区三区| 女同一区二区在线观看| 国产成人高清视频一区二区| 东京热人妻无码一区二区av| 精品欧洲av无码一区二区| 多人伦精品一区二区三区视频| 一区三区三区不卡| 亚洲综合在线成人一区| 无码人妻久久一区二区三区蜜桃| 国产成人无码AV一区二区| 亚洲中文字幕一区精品自拍| 538国产精品一区二区在线| 久久se精品动漫一区二区三区| 性色AV一区二区三区无码| 国产不卡视频一区二区三区| 亚洲欧洲无码一区二区三区| 精品国产一区二区三区在线观看| 天堂资源中文最新版在线一区| 国产免费av一区二区三区| 亚洲一区二区三区免费在线观看 | 亚洲午夜一区二区三区| 精品在线一区二区三区| 精品黑人一区二区三区| 国产一区二区三区久久| 制服中文字幕一区二区| 蜜桃传媒一区二区亚洲AV| 日韩国产免费一区二区三区| 一区二区三区免费视频播放器| 国产一区二区免费视频| 伊人激情AV一区二区三区| 亚洲高清偷拍一区二区三区|