最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区

10個(gè)基于java的cms網(wǎng)站內容管理系統

10個(gè)基于java的cms網(wǎng)站內容管理系統

近期發(fā)布:10 個(gè)最受歡迎的 Java 開(kāi)發(fā)的 CMS 系統(國外)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 446 次瀏覽 ? 2022-09-24 17:10 ? 來(lái)自相關(guān)話(huà)題

  近期發(fā)布:10 個(gè)最受歡迎的 Java 開(kāi)發(fā)的 CMS 系統(國外)
  cms是Content Management System的縮寫(xiě),意思是“內容管理系統”,它有很多基于模板的優(yōu)秀設計,可以加快網(wǎng)站的開(kāi)發(fā),降低開(kāi)發(fā)成本。 cms的能力不僅限于文本處理,它還可以處理圖片、Flash動(dòng)畫(huà)、音視頻流、圖像甚至電子郵件文件。
  本文介紹了 10 個(gè)最流行的 cms 系統,它們都是用 Java 語(yǔ)言開(kāi)發(fā)的。
  1.海象cms
  Walrus cms 是一個(gè)易于使用且直觀(guān)的 Java 開(kāi)發(fā)的 cms 內容管理系統。 Walruscms沒(méi)有提供單獨的管理界面,所有的管理操作都直接在當前頁(yè)面進(jìn)行,通過(guò)點(diǎn)擊和拖動(dòng)即可實(shí)現內容編輯。使用 Spring 框架。
  2.打開(kāi)cms
  Opencms是一個(gè)專(zhuān)業(yè)級的開(kāi)源網(wǎng)站內容管理系統。 Opencms有助于輕松構建和管理復雜的網(wǎng)站,無(wú)需專(zhuān)業(yè)的 HTML 知識。在使用復雜的模板引擎規劃站點(diǎn)時(shí),它提供了類(lèi)似于熟悉的辦公應用程序的所見(jiàn)即所得編輯器來(lái)幫助用戶(hù)創(chuàng )建內容。 Opencms 是一個(gè)完全開(kāi)源的軟件,不需要任何許可費用。
  Opencms基于JAVA和XML語(yǔ)言技術(shù),適合完全集成到現有系統中。 Opencms 可以在完全開(kāi)源的環(huán)境(例如:Linux、Apache、Tomcat、MySQL)中很好地運行。當然,它也可以在商業(yè)環(huán)境中很好地運行(例如:Windows NT、IIS、BEA Weblogic、Oracle DB)。
  3.阿斯布魯
  Asbru 網(wǎng)站內容管理系統是一個(gè)功能齊全、易于使用、基于數據庫的網(wǎng)站內容管理系統(cms)。內置社區、數據庫、電子商務(wù)和統計模塊。支持多種操作系統和大部分數據庫系統;支持.NET、PHP、Java等開(kāi)發(fā)語(yǔ)言。
  
  4.脈沖
  Pulse 是一個(gè)用 Java 開(kāi)發(fā)的 Web 應用程序框架和一個(gè)門(mén)戶(hù)解決方案,它提供了易于使用和可擴展的基于瀏覽器的應用程序的創(chuàng )建,例如 網(wǎng)站、門(mén)戶(hù)等。提供了一些常用的組件,如cms模塊、購物車(chē)、用戶(hù)管理模塊等。
  5.木蘭
  Magnolia 是一個(gè)基于 Java 的開(kāi)源 Web 內容管理系統(cms),建立在 Java 內容知識庫標準(JSR-170) 之上。Magnolia 支持包括英語(yǔ)和Chinese) 語(yǔ)言,支持本地搜索、基于 XML 的導入/導出、跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的 War 文件可以部署到任何 J2EE 容器。最新版本還增加了數字媒體的在線(xiàn)編輯功能。
  在線(xiàn)演示:
  6.網(wǎng)格cms
  Meshcms是一個(gè)用java編寫(xiě)的在線(xiàn)編輯系統。它有一系列收錄在 cms 中的特性。但是它的實(shí)現方式很傳統:如果頁(yè)面以html文檔的形式存儲,一些附加的特性是基于文檔的,不需要數據庫。 Meshcms被認為是一個(gè)快速編輯網(wǎng)頁(yè),管理文件,以及創(chuàng )建一些常用的組件如菜單、子菜單表單、郵寄表單、相冊等在線(xiàn)工具。
  7.Infoglue
  
  infoglue 是一個(gè)完全用 Java 開(kāi)發(fā)的高級、可擴展和健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  8.JadaSite
  用Java開(kāi)發(fā)的一個(gè)開(kāi)源且易于使用的內容管理系統和電子商務(wù)系統
  9.Enoniccms
  Enonic cms 是一個(gè)完整的軟件平臺,包括 Portal網(wǎng)站,通過(guò)各種數字渠道和內容管理系統呈現專(zhuān)門(mén)為大中型組織定義的網(wǎng)絡(luò )策略。
  10.ApacheLenya
  Apache Lenya 是一個(gè)開(kāi)源的 java 內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
  文:開(kāi)源中國
  最佳實(shí)踐:18個(gè)Java開(kāi)源CMS系統一覽
  尋找313網(wǎng)站建設者并招募經(jīng)銷(xiāo)商
  核心提示:Love Bar 在之前的博文中介紹了基于 ASP 和 PHP 的開(kāi)源 cms 程序列表。今天,為網(wǎng)友們獻上18款Java開(kāi)源cms系統盛宴,款待網(wǎng)友。愛(ài)。
  Love Bar 在之前的博文中介紹了基于 ASP 和 PHP 的開(kāi)源 cms 程序列表。今天為廣大網(wǎng)友獻上18場(chǎng)Java開(kāi)源cms系統盛宴,享受網(wǎng)友們的喜愛(ài)。
  1.信息膠
  infoglue 是一個(gè)完全用 Java 開(kāi)發(fā)的高級、可擴展和健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  項目主頁(yè):
  2.木蘭
  Magnolia 是一個(gè)基于 Java 的開(kāi)源 Web 內容管理系統(cms),建立在 Java 內容知識庫標準(JSR-170).Magnolia 支持包括英語(yǔ)和Chinese) 語(yǔ)言,支持本地搜索、基于 XML 的導入/導出、跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的 War 文件可以部署到任何 J2EE 容器。最新版本還增加了數字媒體的在線(xiàn)編輯。
  項目主頁(yè):
  3.打開(kāi)cms
  Opencms 是用Java 編寫(xiě)的J2EE 產(chǎn)品。它與 Tomcat 捆綁在一起。但也可以使用 ATG Dynamo、WebLogic 和 WebSphere。 Opencms 支持各種 RDBMS 來(lái)存儲內容,包括 Oracle、SQL Server、Sybase 和 mySQL。新版本提供了新的模板引擎、JSP 支持、新的連接管理系統,并提高了穩定性。
  項目主頁(yè):
  4.JBoss 核彈
  Nukes for JBoss 是一個(gè)基于 J2EE 架構的完整內容管理系統。它收錄高級用戶(hù)組管理、安全規則等組件。直到運行時(shí)才部署這些組件。
  項目主頁(yè):? module=html&op=userdisplay&id=developers/projects/nukes/index
  5.eAdmin/OWX
  
  基于java/jsp的SiteEditor、cms、列表生成器等開(kāi)源軟件。包括:模塊、XML 配置、Struts、自己的 API、組件、所見(jiàn)即所得、多語(yǔ)言、多用戶(hù)、基于 Web 的管理器。
  項目主頁(yè):
  6.Apache Lenya
  Apache Lenya 是一個(gè)開(kāi)源的 java 內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
  項目主頁(yè):
  7.科法克斯
  Cofax 基于 Java/XMLcms。它是由 Kinight Ridder 開(kāi)發(fā)的,旨在促進(jìn)其新聞的管理網(wǎng)站。
  項目主頁(yè):
  8.網(wǎng)絡(luò )編輯器
  webEditor 是專(zhuān)門(mén)論壇的管理系統網(wǎng)站。使用繭作為機制。
  項目主頁(yè):
  9.MMBase
  MMBase是基于MPL的開(kāi)源cms,方便信息發(fā)布和維護,包括新聞發(fā)布、論壇、聊天室等模塊,但我個(gè)人認為這個(gè)項目最大的優(yōu)勢在于豐富的文檔,在開(kāi)源項目中是難得一見(jiàn)的地方。
  項目主頁(yè):
  10.離子
  ion 是一個(gè)基于最新技術(shù)的簡(jiǎn)單而強大的內容管理系統。它完全符合 J2EE 標準并使用 XML 來(lái)定義內容結構。使用XSL將內容轉換成各種格式如:HTML、XML、PDF、TXT等,并使用JSTL作為模板系統。
  項目主頁(yè):
  
  11.賈希亞
  Jahia 發(fā)布了 Jahia 內容集成管理系統cms 和它工作的門(mén)戶(hù)服務(wù)器。此版本包括一個(gè)功能齊全的搜索引擎、一個(gè)輕量級的文檔管理系統(支持 WebDAV)和一些協(xié)作應用程序門(mén)戶(hù)(討論組、WebMail、ToDo List、Timesheet...)
  項目主頁(yè):
  12.JetNuke
  JetNuke 是一個(gè)網(wǎng)站內容管理系統 (cms),基于 PHPNuke,但使用 Java 開(kāi)發(fā)。
  JetNuke 可免費使用且開(kāi)源(GNU 許可)。
  JetNuke 嚴格分離邏輯、數據和樣式
  7 種預定義樣式,無(wú)需復雜的配置文件,一個(gè) Web 管理。 JetNuke 可以很好地與 JForum 結合使用。
  JetNuke 使用 FCKEditor(所見(jiàn)即所得 HTML 編輯器)編輯 HTML 內容。
  項目主頁(yè):
  13.點(diǎn)cms
  dotcms 是一個(gè) 100% 免費的基于 J2EE/門(mén)戶(hù)的內容管理系統,具有許多其他 cms 所沒(méi)有的吸引人的特性。 dotcms 中使用的開(kāi)源項目和框架包括:Apache Tomcat、Liferay Enterprise Portal、Apache Struts、Hibernate ORM、Velocity Template Language、Lucene Search Engine。 dotcms 使用 Eclipse IDE 開(kāi)發(fā),使用 Velocity + Struts 作為前端,使 dotcms 易于擴展和構建。 dotcms 的許可證:Dotmarketing 公共許可證。
  項目主頁(yè):
  14.打開(kāi)編輯
  penEdit 包括三個(gè)主要模塊:Web 內容管理、電子商務(wù)和博客。 Web 內容管理包括在線(xiàn)編輯、動(dòng)態(tài)布局、拼寫(xiě)檢查(英文)、用戶(hù)管理、文檔管理、版本控制和通知工具。電子商務(wù)模塊包括在線(xiàn)產(chǎn)品目錄管理、購物車(chē)、電子支付、產(chǎn)品展示和高級產(chǎn)品搜索(使用Nutch/Lucene的網(wǎng)絡(luò )爬取和搜索功能進(jìn)行高級搜索,因此不需要數據庫功能)。博客模塊包括在線(xiàn)管理、評論、注冊和RSS/Atom引擎。 OpenEdit 使用的開(kāi)源組件有:Velocity、Dom4j、Spring、Lucene。
  項目主頁(yè): 查看全部

  近期發(fā)布:10 個(gè)最受歡迎的 Java 開(kāi)發(fā)的 CMS 系統(國外)
  cms是Content Management System的縮寫(xiě),意思是“內容管理系統”,它有很多基于模板的優(yōu)秀設計,可以加快網(wǎng)站的開(kāi)發(fā),降低開(kāi)發(fā)成本。 cms的能力不僅限于文本處理,它還可以處理圖片、Flash動(dòng)畫(huà)、音視頻流、圖像甚至電子郵件文件。
  本文介紹了 10 個(gè)最流行的 cms 系統,它們都是用 Java 語(yǔ)言開(kāi)發(fā)的。
  1.海象cms
  Walrus cms 是一個(gè)易于使用且直觀(guān)的 Java 開(kāi)發(fā)的 cms 內容管理系統。 Walruscms沒(méi)有提供單獨的管理界面,所有的管理操作都直接在當前頁(yè)面進(jìn)行,通過(guò)點(diǎn)擊和拖動(dòng)即可實(shí)現內容編輯。使用 Spring 框架。
  2.打開(kāi)cms
  Opencms是一個(gè)專(zhuān)業(yè)級的開(kāi)源網(wǎng)站內容管理系統。 Opencms有助于輕松構建和管理復雜的網(wǎng)站,無(wú)需專(zhuān)業(yè)的 HTML 知識。在使用復雜的模板引擎規劃站點(diǎn)時(shí),它提供了類(lèi)似于熟悉的辦公應用程序的所見(jiàn)即所得編輯器來(lái)幫助用戶(hù)創(chuàng )建內容。 Opencms 是一個(gè)完全開(kāi)源的軟件,不需要任何許可費用。
  Opencms基于JAVA和XML語(yǔ)言技術(shù),適合完全集成到現有系統中。 Opencms 可以在完全開(kāi)源的環(huán)境(例如:Linux、Apache、Tomcat、MySQL)中很好地運行。當然,它也可以在商業(yè)環(huán)境中很好地運行(例如:Windows NT、IIS、BEA Weblogic、Oracle DB)。
  3.阿斯布魯
  Asbru 網(wǎng)站內容管理系統是一個(gè)功能齊全、易于使用、基于數據庫的網(wǎng)站內容管理系統(cms)。內置社區、數據庫、電子商務(wù)和統計模塊。支持多種操作系統和大部分數據庫系統;支持.NET、PHP、Java等開(kāi)發(fā)語(yǔ)言。
  
  4.脈沖
  Pulse 是一個(gè)用 Java 開(kāi)發(fā)的 Web 應用程序框架和一個(gè)門(mén)戶(hù)解決方案,它提供了易于使用和可擴展的基于瀏覽器的應用程序的創(chuàng )建,例如 網(wǎng)站、門(mén)戶(hù)等。提供了一些常用的組件,如cms模塊、購物車(chē)、用戶(hù)管理模塊等。
  5.木蘭
  Magnolia 是一個(gè)基于 Java 的開(kāi)源 Web 內容管理系統(cms),建立在 Java 內容知識庫標準(JSR-170) 之上。Magnolia 支持包括英語(yǔ)和Chinese) 語(yǔ)言,支持本地搜索、基于 XML 的導入/導出、跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的 War 文件可以部署到任何 J2EE 容器。最新版本還增加了數字媒體的在線(xiàn)編輯功能。
  在線(xiàn)演示:
  6.網(wǎng)格cms
  Meshcms是一個(gè)用java編寫(xiě)的在線(xiàn)編輯系統。它有一系列收錄在 cms 中的特性。但是它的實(shí)現方式很傳統:如果頁(yè)面以html文檔的形式存儲,一些附加的特性是基于文檔的,不需要數據庫。 Meshcms被認為是一個(gè)快速編輯網(wǎng)頁(yè),管理文件,以及創(chuàng )建一些常用的組件如菜單、子菜單表單、郵寄表單、相冊等在線(xiàn)工具。
  7.Infoglue
  
  infoglue 是一個(gè)完全用 Java 開(kāi)發(fā)的高級、可擴展和健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  8.JadaSite
  用Java開(kāi)發(fā)的一個(gè)開(kāi)源且易于使用的內容管理系統和電子商務(wù)系統
  9.Enoniccms
  Enonic cms 是一個(gè)完整的軟件平臺,包括 Portal網(wǎng)站,通過(guò)各種數字渠道和內容管理系統呈現專(zhuān)門(mén)為大中型組織定義的網(wǎng)絡(luò )策略。
  10.ApacheLenya
  Apache Lenya 是一個(gè)開(kāi)源的 java 內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
  文:開(kāi)源中國
  最佳實(shí)踐:18個(gè)Java開(kāi)源CMS系統一覽
  尋找313網(wǎng)站建設者并招募經(jīng)銷(xiāo)商
  核心提示:Love Bar 在之前的博文中介紹了基于 ASP 和 PHP 的開(kāi)源 cms 程序列表。今天,為網(wǎng)友們獻上18款Java開(kāi)源cms系統盛宴,款待網(wǎng)友。愛(ài)。
  Love Bar 在之前的博文中介紹了基于 ASP 和 PHP 的開(kāi)源 cms 程序列表。今天為廣大網(wǎng)友獻上18場(chǎng)Java開(kāi)源cms系統盛宴,享受網(wǎng)友們的喜愛(ài)。
  1.信息膠
  infoglue 是一個(gè)完全用 Java 開(kāi)發(fā)的高級、可擴展和健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  項目主頁(yè):
  2.木蘭
  Magnolia 是一個(gè)基于 Java 的開(kāi)源 Web 內容管理系統(cms),建立在 Java 內容知識庫標準(JSR-170).Magnolia 支持包括英語(yǔ)和Chinese) 語(yǔ)言,支持本地搜索、基于 XML 的導入/導出、跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的 War 文件可以部署到任何 J2EE 容器。最新版本還增加了數字媒體的在線(xiàn)編輯。
  項目主頁(yè):
  3.打開(kāi)cms
  Opencms 是用Java 編寫(xiě)的J2EE 產(chǎn)品。它與 Tomcat 捆綁在一起。但也可以使用 ATG Dynamo、WebLogic 和 WebSphere。 Opencms 支持各種 RDBMS 來(lái)存儲內容,包括 Oracle、SQL Server、Sybase 和 mySQL。新版本提供了新的模板引擎、JSP 支持、新的連接管理系統,并提高了穩定性。
  項目主頁(yè):
  4.JBoss 核彈
  Nukes for JBoss 是一個(gè)基于 J2EE 架構的完整內容管理系統。它收錄高級用戶(hù)組管理、安全規則等組件。直到運行時(shí)才部署這些組件。
  項目主頁(yè):? module=html&op=userdisplay&id=developers/projects/nukes/index
  5.eAdmin/OWX
  
  基于java/jsp的SiteEditor、cms、列表生成器等開(kāi)源軟件。包括:模塊、XML 配置、Struts、自己的 API、組件、所見(jiàn)即所得、多語(yǔ)言、多用戶(hù)、基于 Web 的管理器。
  項目主頁(yè):
  6.Apache Lenya
  Apache Lenya 是一個(gè)開(kāi)源的 java 內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
  項目主頁(yè):
  7.科法克斯
  Cofax 基于 Java/XMLcms。它是由 Kinight Ridder 開(kāi)發(fā)的,旨在促進(jìn)其新聞的管理網(wǎng)站。
  項目主頁(yè):
  8.網(wǎng)絡(luò )編輯器
  webEditor 是專(zhuān)門(mén)論壇的管理系統網(wǎng)站。使用繭作為機制。
  項目主頁(yè):
  9.MMBase
  MMBase是基于MPL的開(kāi)源cms,方便信息發(fā)布和維護,包括新聞發(fā)布、論壇、聊天室等模塊,但我個(gè)人認為這個(gè)項目最大的優(yōu)勢在于豐富的文檔,在開(kāi)源項目中是難得一見(jiàn)的地方。
  項目主頁(yè):
  10.離子
  ion 是一個(gè)基于最新技術(shù)的簡(jiǎn)單而強大的內容管理系統。它完全符合 J2EE 標準并使用 XML 來(lái)定義內容結構。使用XSL將內容轉換成各種格式如:HTML、XML、PDF、TXT等,并使用JSTL作為模板系統。
  項目主頁(yè):
  
  11.賈希亞
  Jahia 發(fā)布了 Jahia 內容集成管理系統cms 和它工作的門(mén)戶(hù)服務(wù)器。此版本包括一個(gè)功能齊全的搜索引擎、一個(gè)輕量級的文檔管理系統(支持 WebDAV)和一些協(xié)作應用程序門(mén)戶(hù)(討論組、WebMail、ToDo List、Timesheet...)
  項目主頁(yè):
  12.JetNuke
  JetNuke 是一個(gè)網(wǎng)站內容管理系統 (cms),基于 PHPNuke,但使用 Java 開(kāi)發(fā)。
  JetNuke 可免費使用且開(kāi)源(GNU 許可)。
  JetNuke 嚴格分離邏輯、數據和樣式
  7 種預定義樣式,無(wú)需復雜的配置文件,一個(gè) Web 管理。 JetNuke 可以很好地與 JForum 結合使用。
  JetNuke 使用 FCKEditor(所見(jiàn)即所得 HTML 編輯器)編輯 HTML 內容。
  項目主頁(yè):
  13.點(diǎn)cms
  dotcms 是一個(gè) 100% 免費的基于 J2EE/門(mén)戶(hù)的內容管理系統,具有許多其他 cms 所沒(méi)有的吸引人的特性。 dotcms 中使用的開(kāi)源項目和框架包括:Apache Tomcat、Liferay Enterprise Portal、Apache Struts、Hibernate ORM、Velocity Template Language、Lucene Search Engine。 dotcms 使用 Eclipse IDE 開(kāi)發(fā),使用 Velocity + Struts 作為前端,使 dotcms 易于擴展和構建。 dotcms 的許可證:Dotmarketing 公共許可證。
  項目主頁(yè):
  14.打開(kāi)編輯
  penEdit 包括三個(gè)主要模塊:Web 內容管理、電子商務(wù)和博客。 Web 內容管理包括在線(xiàn)編輯、動(dòng)態(tài)布局、拼寫(xiě)檢查(英文)、用戶(hù)管理、文檔管理、版本控制和通知工具。電子商務(wù)模塊包括在線(xiàn)產(chǎn)品目錄管理、購物車(chē)、電子支付、產(chǎn)品展示和高級產(chǎn)品搜索(使用Nutch/Lucene的網(wǎng)絡(luò )爬取和搜索功能進(jìn)行高級搜索,因此不需要數據庫功能)。博客模塊包括在線(xiàn)管理、評論、注冊和RSS/Atom引擎。 OpenEdit 使用的開(kāi)源組件有:Velocity、Dom4j、Spring、Lucene。
  項目主頁(yè):

安全解決方案:內容管理系統 開(kāi)源 java_開(kāi)源重磅,java內容管理系統CMS

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 189 次瀏覽 ? 2022-09-24 16:22 ? 來(lái)自相關(guān)話(huà)題

  安全解決方案:內容管理系統 開(kāi)源 java_開(kāi)源重磅,java內容管理系統CMS
  我買(mǎi)的臨時(shí)空間不夠用。內存不足,老是關(guān)閉,先轉京東云,免費,不知道能免費多久。
  這是地址 2
  這是地址
  可以看一下,賬號admin密碼123不要盲目輸入,不要被屏蔽,哈哈
  基于 Walruscms 的變化。覆蓋后端的每個(gè)方法更簡(jiǎn)單。更高效。
  
  經(jīng)過(guò)幾個(gè)月的修改,現在可以實(shí)施了。沒(méi)有大錯,可以試試。
  首先轉到源代碼。代碼在淘碼上提交。這個(gè)是免費的,使用svn,只有src和WebRoot可用,可以使用svnclient作為web項目搬出去
  有任何問(wèn)題請聯(lián)系QQ群,群號為261840109
  cms賬號admin密碼123,可自行配置
  如果你能把源代碼搬出來(lái),你肯定會(huì )懂一些編程。創(chuàng )建數據庫,修改hibernate配置文件,表會(huì )自動(dòng)創(chuàng )建。其他的不具體。
  
  這是svn地址
  保持內容管理簡(jiǎn)單。只需單擊鼠標,您就可以輕松構建自己的網(wǎng)站。
  這個(gè)開(kāi)源cms使用技術(shù),SpringMVC。春季安全。 Hibernate jQuery 及其擴展,Tiles2 和 FreeMark。
  偽靜態(tài),.html請求,基于.html頁(yè)面和數據庫緩存Ehcache。為了承受高流量,可以啟用和禁用頁(yè)面緩存。
  我們先拍張照片吧??纯窗?。從csdn文章中提取了幾篇文章,包括工業(yè)、云計算、移動(dòng)等導航。導航下方有文章。有圖片,直接從csdn復制過(guò)來(lái)的。
  解決方案:微信小程序云開(kāi)發(fā)商城項目 微信支付-內容管理-后臺管理系統cms
  你能從這門(mén)課程中學(xué)到什么?
  1.微信小程序基本頁(yè)面布局和風(fēng)格美化;
  2.vant-weapp 是一個(gè)非常實(shí)用的UI組件庫,讓頁(yè)面更加美觀(guān),方便開(kāi)發(fā);
  3.小程序云開(kāi)發(fā)、云功能、云數據庫的詳細使用方法及示例應用;
  4.微信小程序自帶的內容管理CSM,可以輕松實(shí)現小程序的后臺管理系統;
  5.進(jìn)入高級小程序云數據庫查詢(xún),詳細講解聚合查詢(xún)和復雜表查詢(xún);
  6.詳細介紹商業(yè)級小程序商城項目的創(chuàng )建和申請方法(營(yíng)業(yè)執照申請也有討論);
  
  7.最易懂的微信支付實(shí)現流程,從申請微信商戶(hù)開(kāi)始;
  8.項目啟動(dòng)流程及包管理和壓縮;
  項目已上線(xiàn),可自行查看,在小程序中搜索“青春幫網(wǎng)”,即可找到對應的小程序。
  一些頁(yè)面顯示:
   查看全部

  安全解決方案:內容管理系統 開(kāi)源 java_開(kāi)源重磅,java內容管理系統CMS
  我買(mǎi)的臨時(shí)空間不夠用。內存不足,老是關(guān)閉,先轉京東云,免費,不知道能免費多久。
  這是地址 2
  這是地址
  可以看一下,賬號admin密碼123不要盲目輸入,不要被屏蔽,哈哈
  基于 Walruscms 的變化。覆蓋后端的每個(gè)方法更簡(jiǎn)單。更高效。
  
  經(jīng)過(guò)幾個(gè)月的修改,現在可以實(shí)施了。沒(méi)有大錯,可以試試。
  首先轉到源代碼。代碼在淘碼上提交。這個(gè)是免費的,使用svn,只有src和WebRoot可用,可以使用svnclient作為web項目搬出去
  有任何問(wèn)題請聯(lián)系QQ群,群號為261840109
  cms賬號admin密碼123,可自行配置
  如果你能把源代碼搬出來(lái),你肯定會(huì )懂一些編程。創(chuàng )建數據庫,修改hibernate配置文件,表會(huì )自動(dòng)創(chuàng )建。其他的不具體。
  
  這是svn地址
  保持內容管理簡(jiǎn)單。只需單擊鼠標,您就可以輕松構建自己的網(wǎng)站。
  這個(gè)開(kāi)源cms使用技術(shù),SpringMVC。春季安全。 Hibernate jQuery 及其擴展,Tiles2 和 FreeMark。
  偽靜態(tài),.html請求,基于.html頁(yè)面和數據庫緩存Ehcache。為了承受高流量,可以啟用和禁用頁(yè)面緩存。
  我們先拍張照片吧??纯窗?。從csdn文章中提取了幾篇文章,包括工業(yè)、云計算、移動(dòng)等導航。導航下方有文章。有圖片,直接從csdn復制過(guò)來(lái)的。
  解決方案:微信小程序云開(kāi)發(fā)商城項目 微信支付-內容管理-后臺管理系統cms
  你能從這門(mén)課程中學(xué)到什么?
  1.微信小程序基本頁(yè)面布局和風(fēng)格美化;
  2.vant-weapp 是一個(gè)非常實(shí)用的UI組件庫,讓頁(yè)面更加美觀(guān),方便開(kāi)發(fā);
  3.小程序云開(kāi)發(fā)、云功能、云數據庫的詳細使用方法及示例應用;
  4.微信小程序自帶的內容管理CSM,可以輕松實(shí)現小程序的后臺管理系統;
  5.進(jìn)入高級小程序云數據庫查詢(xún),詳細講解聚合查詢(xún)和復雜表查詢(xún);
  6.詳細介紹商業(yè)級小程序商城項目的創(chuàng )建和申請方法(營(yíng)業(yè)執照申請也有討論);
  
  7.最易懂的微信支付實(shí)現流程,從申請微信商戶(hù)開(kāi)始;
  8.項目啟動(dòng)流程及包管理和壓縮;
  項目已上線(xiàn),可自行查看,在小程序中搜索“青春幫網(wǎng)”,即可找到對應的小程序。
  一些頁(yè)面顯示:
  

解決方案:推薦 16 個(gè)優(yōu)秀的 Vue 開(kāi)源項目

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 173 次瀏覽 ? 2022-09-24 08:13 ? 來(lái)自相關(guān)話(huà)題

  解決方案:推薦 16 個(gè)優(yōu)秀的 Vue 開(kāi)源項目
  01cms和生成器
  頁(yè)面工具包
  Pagekit 是在 Vue.js 和 Symphony 框架的幫助下構建的開(kāi)源 cms。 cms 是模塊化的,因此您可以逐步擴展功能。 Pagekit 是在 MIT 許可下發(fā)布的,因此可以不受任何限制地自由修改、共享和重新分發(fā)。
  本產(chǎn)品具有cms的所有主要和高級功能:
  ·具有網(wǎng)站性能的可定制分析儀表板;
  ·網(wǎng)站內容編輯頁(yè)面;
  ·內置博客;
  ·HTML 和 Markdown 編輯器;
  ·文件管理器;
  ·用戶(hù)角色管理。
  還有一些對開(kāi)發(fā)人員特別有用的東西和功能。該產(chǎn)品是使用簡(jiǎn)單的 ORM、模塊化架構和包管理構建的。還有一個(gè)內置的調試工具欄,可以幫助開(kāi)發(fā)人員監控性能、路由、數據庫查詢(xún)和調試內部系統事件,擴展甚至可以添加自己的功能?;蛘?,CLI 可用于執行系統更新、安裝和卸載擴展和主題,以及直接從終端清除緩存。
  產(chǎn)品有強大的貢獻指南,團隊歡迎人們修復錯誤、翻譯或擴展cms的功能。社區并不大,但非常發(fā)達,并渴望幫助新人。
  因此,這是一個(gè)非常強大的產(chǎn)品,具有非常全面的文檔和透明的貢獻指南。開(kāi)啟通往開(kāi)源世界之路的絕佳選擇。
  02Vuepress
  VuePress 是由 Vue.js 作者 EvanYou 創(chuàng )建的基于 Vue 的靜態(tài)站點(diǎn)生成器。在 VuePress 的幫助下,網(wǎng)站使用 VueRouter、Vue 和 webpack 創(chuàng )建。最初,該產(chǎn)品是作為編寫(xiě)技術(shù)文檔的工具而創(chuàng )建的,但現在它是一個(gè)小巧、緊湊且功能強大的無(wú)頭 cms 。在 VuePress 中,您使用 Markdown 編寫(xiě)內容,然后將其轉換為預渲染的靜態(tài) HTML 文件。
  該項目有一個(gè)組織良好的捐贈指南和一個(gè)透明的工作流程。它還具有出色的問(wèn)題管理功能。社區有超過(guò) 300 名活躍的貢獻者可以為您提供支持。這是您開(kāi)始為開(kāi)源項目做貢獻的絕佳選擇。
  03Vue店面
  Vuestorefront 是一個(gè)面向電子商務(wù)的 PWA,幾乎可以連接到任何電子商務(wù)后端:它使用無(wú)頭架構。這包括流行的 BigCommerce 平臺、Magento、Shopware 等。 VueStorefront 的一些優(yōu)勢包括移動(dòng)優(yōu)先方法、服務(wù)器端渲染(有利于 SEO)和離線(xiàn)模式。
  該產(chǎn)品擁有一個(gè)發(fā)達的社區:Slack 中有大約 2,000 名開(kāi)發(fā)人員和 180 多名活躍的貢獻者。這一點(diǎn)特別有價(jià)值,因為團隊有一個(gè)清晰的路線(xiàn)圖,所以你作為貢獻者可以選擇你可以做的任務(wù)??偠灾?,這是一個(gè)非常有趣、支持和耗時(shí)的產(chǎn)品。
  04Vuegg
  Vuegg 允許您通過(guò)將組件直接拖放到可視化編輯器中并根據您的選擇移動(dòng)它們的大小來(lái)構建 Vue.js 項目。該項目的目的是將設計和原型設計合并到一個(gè)流程中。
  顯著(zhù)特點(diǎn):
  通過(guò)拖放和移動(dòng)/調整大小來(lái)模擬/恢復組件;
  ·支持標準的鼠標和鍵盤(pán)組合;
  ·響應式預覽(移動(dòng)設備、平板電腦、網(wǎng)絡(luò ));
  ·一套基本的HTML5元素;
  ·材料設計組件(vue-mdc-adapter);
  ·Vuejs源碼生成(下載.zip)。
  這個(gè)項目有一個(gè)清晰的路線(xiàn)圖,你可以直接在 Github 上看到。由于該項目相當新,因此在沒(méi)有貢獻指南的情況下仍有工作正在進(jìn)行,但您可以自由打開(kāi)任何問(wèn)題和 PR。
  05網(wǎng)格體
  Gridsome 與 VuePress 有許多相似之處,但對數據源采用了不同且非常強大的方法。它允許您在應用程序中連接和使用許多不同類(lèi)型的數據,然后將這些數據統一到單個(gè) GraphQL 層中?;旧?,Gridsome 使用 Vue 提供前端功能,使用 GraphQL 進(jìn)行數據管理。
  工作方法可以概括為以下三個(gè)步驟:
  您以 Markdown、JSON、YAML 或 CVS 數據格式提供內容,或從 WordPress 或 Drupal 等導入內容。cms;
  內容被轉換為提供集中數據管理的 GraphQL 層;
  然后使用這些數據使用 Vue 構建您的應用程序。
  在開(kāi)發(fā)方面,文檔有清晰的路線(xiàn)圖、描述良好的變更日志和貢獻指南。貢獻是一個(gè)不錯的選擇。
  06UI 組件
  驗證
  
  Vuetify 根據 MaterialDesign 規范提供了大量精心設計的組件 (80+)。 Vuetify 結合了 Vue.js 和 Material 的所有優(yōu)點(diǎn)。該框架與 RTL 和 VueCLI-3 兼容。 Vuetify 的所有組件都有很好的文檔記錄,并且有清晰的示例。它適用于 Vue 的服務(wù)器端渲染 (SSR)。 Vuetify 支持所有現代 Web 瀏覽器 - 甚至 IE11 和 Safari9+(使用多用途填充)。它還提供了現成的項目腳手架,因此您可以使用一個(gè)命令開(kāi)始構建您的 Vue.js 應用程序。
  它提供了一組基于材料設計的組件,例如:
  ·按鈕;
  ·投資;
  ·卡片;
  ·桌子,
  ·列表。
  Vuetify 背后有一個(gè)充滿(mǎn)活力的社區,有超過(guò) 500 名貢獻者創(chuàng )建了許多 Vuetify 插件。它具有成為優(yōu)秀開(kāi)源的所有主要組成部分:廣泛的文檔、貢獻指南、問(wèn)題管理。但在我們看來(lái),很難做出貢獻,因為社區已經(jīng)很大了。
  07Buefy
  Buefy 為基于 Bulma 的 Vue.js 提供輕量級 UI 組件。 Buefy 有兩個(gè)核心原則:保持簡(jiǎn)單和輕量級。這也解釋了為什么它的唯一依賴(lài)項是 Vue 和 Bulma。盡管它只有 40 多個(gè)組件,但它為您提供了移動(dòng)優(yōu)先且響應迅速的 UI 組件。
  特點(diǎn):
  ·支持MaterialDesign圖標和FontAwesome;
  ·非常輕量級,除了Vue&Bu lma沒(méi)有內部依賴(lài);
  ·大約 88KB min + gzip ;
  ·語(yǔ)義代碼輸出。
  08Vue材質(zhì)
  VUEMaterial 簡(jiǎn)單、輕巧并且完全按照 GoogleMaterial 設計規范構建。 VUE Materials 提供超過(guò) 56 種組件來(lái)構建不同類(lèi)型的布局。一件很棒的事情是材料設計框架具有非常詳盡的文檔。該框架非常輕量級,收錄完整的組件,并且完全符合 Google Material Design 指南。這種設計適合每個(gè)屏幕并支持所有現代瀏覽器。
  路線(xiàn)圖、貢獻指南、良好的文檔和變更日志都在這里。對于喜歡 UI 項目的開(kāi)發(fā)者來(lái)說(shuō),這是一個(gè)不錯的選擇。
  09 應用
  科爾
  Koel 是一種個(gè)人音樂(lè )流媒體服務(wù),您可以根據自己的需要進(jìn)行定制??蛻?hù)端是用 Vue 編寫(xiě)的,后端是用 Laravel 編寫(xiě)的。針對 Web 開(kāi)發(fā)人員,koel 使用了一些更現代的 Web 技術(shù),例如 flexbox、音頻和拖放 API 等等。
  這個(gè)項目在 Github 上很受歡迎,有 52 位貢獻者。不幸的是,沒(méi)有詳細的貢獻指南,但作者在 Github 上寫(xiě)道,您需要在提交任何內容之前打開(kāi)一個(gè)問(wèn)題。還可以選擇通過(guò) Opencollective 贊助該項目。
  我們喜歡這個(gè)項目背后的想法,即制作由社區開(kāi)發(fā)的流媒體服務(wù)。所以,如果你熱愛(ài)音樂(lè )并想提高你的 Vue 技能,貢獻是一個(gè)不錯的選擇。
  10Eagle.js
  Eagle.js 是使用 Vue 構建的強大、靈活且獨特的幻燈片系統。它允許您在演示文稿中創(chuàng )建易于重復使用的組件、幻燈片和樣式。它還支持動(dòng)畫(huà)、主題和交互式小部件,非常適合 Web 演示。微信搜索公眾號:Java后端編程,回復:java接收信息。
  您可以使用此庫做的最重要的事情之一是將您的幻燈片放在一個(gè)單獨的文件中,然后在其他幻燈片中重復使用它。您還可以將特定幻燈片中的幻燈片導入到另一個(gè)幻燈片中。創(chuàng )建者還提供了幾個(gè)模板以輕松開(kāi)始開(kāi)發(fā)。
  該項目有一個(gè)貢獻指南,其中收錄您可以提供幫助的想法。我們認為這是一個(gè)值得花時(shí)間去做的好項目:它確實(shí)幫助了很多人進(jìn)行演示。此外,在 Eagle 的幫助下開(kāi)始學(xué)習 Vue 很容易。
  11 工具包
  Nuxt.js
  Nuxt 是一個(gè)簡(jiǎn)單直接的框架,用于構建通用應用程序:服務(wù)器渲染應用程序、單頁(yè)應用程序、漸進(jìn)式 Web 應用程序,或者僅將其用作靜態(tài)站點(diǎn)生成器。它也是模塊化的,所以你可以只使用你的頁(yè)面需要的模塊。簡(jiǎn)而言之,Nuxt 讓您免于構建和優(yōu)化頁(yè)面的工作。 Nuxt.js 具有模塊化架構,有 50 多個(gè)模塊可供選擇。
  特點(diǎn):
  ·熱代碼重載;
  ·服務(wù)器端渲染或單頁(yè)應用或靜態(tài)生成,任君選擇;
  ·使用nuxt.config.js文件進(jìn)行配置;
  ·每頁(yè)代碼拆分;
  ·使用layouts/目錄自定義布局;
  ·僅加載關(guān)鍵的 CSS(頁(yè)面級別)。
  Nuxt 成為 Vue 開(kāi)發(fā)不可或缺的一部分,擁有眾多貢獻者和廣泛的社區。我們會(huì )選擇為此工具做出貢獻,因為我們知道社區將幫助您發(fā)展技能并教給您一些新知識。
  
  12類(lèi)星體
  Quasar 是一個(gè)通用的、支持 Vue 的框架,它允許您使用相同的代碼庫為不同的平臺編寫(xiě)應用程序:SPA、PWA、SSR 應用程序、混合移動(dòng)應用程序或多平臺桌面應用程序。類(lèi)星體有多達 81 個(gè)組件。
  有一個(gè)很好的文檔和許多旨在提高性能和響應能力的組件。 Quasar 默認集成了最佳實(shí)踐(HTML/CSS/JS 縮小、緩存破壞、樹(shù)抖動(dòng)、源映射、延遲加載的代碼拆分、ES6 傳輸、代碼鏈接、可訪(fǎng)問(wèn)性),因此您可以主要關(guān)注應用程序的功能。它還提供了一個(gè) cli 工具,可以輕松地為新項目構建腳手架。
  該框架有一個(gè)很棒的社區、支持聊天和論壇,以及明顯的貢獻指南。此外,您可以通過(guò)捐款來(lái)支持該工具。微信搜索公眾號:前端技術(shù)編程,回復:前端獲取信息。
  13BootstrapVue
  Boot Vue 是一個(gè)基于 Bootstrap 庫的 UI 工具包。它只是用 Vue 代碼替換常規引導組件中的 JavaScript。借助 BootstrapVue,您可以使用 Vue.js 和世界上最流行的前端 CSS 庫 - Bootstrapv4 在 Web 上構建響應式、移動(dòng)優(yōu)先和 ARIA 可訪(fǎng)問(wèn)的項目。它還可以輕松與 Nuxt.js 集成。
  文檔內容廣泛,再加上 Discord 的強大社區支持,使其成為啟動(dòng)項目和參與貢獻的安全選擇。
  14 開(kāi)發(fā)者工具
  狀態(tài)
  Statusfy 是一個(gè)完全開(kāi)源的狀態(tài)頁(yè)面系統。 Statusfy 站點(diǎn)是基于 Eleventy、Vue、Nuxt.js 和 TailwindCSS 構建的 Web 應用程序。
  這很酷,因為:
  ·Markdown 支持;
  ·這是一個(gè)漸進(jìn)式網(wǎng)絡(luò )應用程序;
  ·多語(yǔ)言支持;
  ·易于定制。
  對于社區管理和支持,該產(chǎn)品具有社區聊天、大量教程、提示、更新和博客。它還具有廣泛的文檔和貢獻指南。
  我們建議對這個(gè)項目做出貢獻,因為它是一個(gè)非常棒的工具,可以讓開(kāi)發(fā)人員的生活變得非常輕松。此外,您將熟悉 Vue 的所有主要技術(shù)。
  15Cachet
  Cachet 是一個(gè)使用 Vue 和 Bootstrap 制作的強大的開(kāi)源狀態(tài)頁(yè)面系統。它內置了 10 種語(yǔ)言。Cachet 捆綁了一個(gè)簡(jiǎn)單(但功能強大)的 JSON API。此外,使用 Cachet,您可以提前安排活動(dòng)。在儀表板中,您可以設置指標 - 一種衡量某事的方法,無(wú)論是正常運行時(shí)間、錯誤率還是完全隨機的。
  Slack 擁有一個(gè)相當大的社區,其中有非?;钴S的貢獻者。開(kāi)始為開(kāi)源社區做出貢獻是個(gè)好主意 - 活躍的社區、中型項目、好主意。
  16Vee驗證
  VeeValidate 是一個(gè)基于模板的 Vue.js 驗證框架,允許您驗證輸入并顯示錯誤。
  由于它是基于模板的,您只需為每個(gè)輸入指定在值更改時(shí)應使用哪個(gè)驗證器。將為支持的 40 多個(gè)區域自動(dòng)生成錯誤。許多規則開(kāi)箱即用。
  特點(diǎn):
  ·熟悉且易于設置的基于模板的驗證;
  ·i18n 支持和 40 多個(gè)地區的錯誤消息;
  ·異步和自定義規則支持;
  ·用 TypeScript 編寫(xiě);
  ·沒(méi)有依賴(lài)關(guān)系。
  VeeValidate 處理表單驗證的主要痛點(diǎn),并以最靈活的方式處理它們:
  ·能夠為您的用戶(hù)設計復雜的用戶(hù)體驗;
  ·最常見(jiàn)的驗證是內置的;
  ·跨領(lǐng)域驗證;
  ·用于增強表單的可訪(fǎng)問(wèn)性和樣式的實(shí)用程序;
  ·本地化內置于核心。
  團隊歡迎大家為項目做出貢獻,并擁有良好的文檔和貢獻指南。它也有一些很好的例子和一個(gè)很棒的社區。
  結論
  我們采集了 Vue 上最有用和最成熟的開(kāi)源項目。我們要再次指出:首先,在選擇受資助項目之前,請注意以下幾點(diǎn): 文檔和貢獻指南 另外,選擇您喜歡的項目,無(wú)論是否受歡迎。如果您希望我們在此集合中收錄任何其他工具,請寫(xiě)信給我們。我們希望您分享此 文章 以幫助人們了解偉大的開(kāi)源項目。
  解決方案:新網(wǎng)站怎么樣才能快速優(yōu)化排名呢?
  網(wǎng)站上線(xiàn)后,有很多問(wèn)題需要面對。同樣要注意幾個(gè)工作流程,讓新站更快參與排名。一起來(lái)看看吧。
  新網(wǎng)站如何快速優(yōu)化你的排名
  一、很多缺失的內容
  新站上線(xiàn)后,需要大量的內容。如果前期只有一個(gè)人優(yōu)化網(wǎng)站,那么需要每天定時(shí)更新內容,并確定每日更新文章的次數和頻率,讓蜘蛛根據爬取我們設置的更新時(shí)間。對于新站點(diǎn),它不僅保持更新頻率,而且穩定蜘蛛爬行。同時(shí),大量的內容需要有價(jià)值,字數必須達到一定的量,這樣蜘蛛的爬取才不會(huì )影響網(wǎng)站的總分。
  
  二、網(wǎng)站TKD 書(shū)面
  網(wǎng)站上線(xiàn)前需要完成所有網(wǎng)站頁(yè)面的TDK,除了文章通過(guò)標題自行生成,最重要的是首頁(yè)和欄目頁(yè)面,通過(guò)我們的公式關(guān)鍵詞的順序和內容,幫助用戶(hù)通過(guò)搜索快速檢索到我們的網(wǎng)站。
  新網(wǎng)站如何快速優(yōu)化你的排名
  三、網(wǎng)站代碼簡(jiǎn)潔
  
  在制定網(wǎng)站框架之前,一定要想想網(wǎng)站上線(xiàn)后每天爬取的蜘蛛是否能完全爬取到我們的網(wǎng)站內容。如果你的站點(diǎn)代碼數量很大,而且大部分內容都是采集,對整個(gè)站點(diǎn)的排名有影響。我們能做的就是推出高質(zhì)量的內容。
  四、網(wǎng)站用戶(hù)體驗
  這是網(wǎng)站上線(xiàn)后最重要的考慮,因為網(wǎng)站上線(xiàn)后,會(huì )先被搜索引擎審核。審核后,將是用戶(hù)。如果用戶(hù)不滿(mǎn)意,首先影響排名的是轉化率。在做網(wǎng)站的時(shí)候,首先要考慮用戶(hù)的想法和需求,這樣頁(yè)面的留存率才會(huì )高。
  新站上線(xiàn)后,我們能做的就是先填寫(xiě)內容,但在質(zhì)量上,我們需要保證滿(mǎn)足用戶(hù)的需求,這樣搜索引擎才會(huì )給我們一個(gè)好的排名根據總分網(wǎng)站. 查看全部

  解決方案:推薦 16 個(gè)優(yōu)秀的 Vue 開(kāi)源項目
  01cms和生成器
  頁(yè)面工具包
  Pagekit 是在 Vue.js 和 Symphony 框架的幫助下構建的開(kāi)源 cms。 cms 是模塊化的,因此您可以逐步擴展功能。 Pagekit 是在 MIT 許可下發(fā)布的,因此可以不受任何限制地自由修改、共享和重新分發(fā)。
  本產(chǎn)品具有cms的所有主要和高級功能:
  ·具有網(wǎng)站性能的可定制分析儀表板;
  ·網(wǎng)站內容編輯頁(yè)面;
  ·內置博客;
  ·HTML 和 Markdown 編輯器;
  ·文件管理器;
  ·用戶(hù)角色管理。
  還有一些對開(kāi)發(fā)人員特別有用的東西和功能。該產(chǎn)品是使用簡(jiǎn)單的 ORM、模塊化架構和包管理構建的。還有一個(gè)內置的調試工具欄,可以幫助開(kāi)發(fā)人員監控性能、路由、數據庫查詢(xún)和調試內部系統事件,擴展甚至可以添加自己的功能?;蛘?,CLI 可用于執行系統更新、安裝和卸載擴展和主題,以及直接從終端清除緩存。
  產(chǎn)品有強大的貢獻指南,團隊歡迎人們修復錯誤、翻譯或擴展cms的功能。社區并不大,但非常發(fā)達,并渴望幫助新人。
  因此,這是一個(gè)非常強大的產(chǎn)品,具有非常全面的文檔和透明的貢獻指南。開(kāi)啟通往開(kāi)源世界之路的絕佳選擇。
  02Vuepress
  VuePress 是由 Vue.js 作者 EvanYou 創(chuàng )建的基于 Vue 的靜態(tài)站點(diǎn)生成器。在 VuePress 的幫助下,網(wǎng)站使用 VueRouter、Vue 和 webpack 創(chuàng )建。最初,該產(chǎn)品是作為編寫(xiě)技術(shù)文檔的工具而創(chuàng )建的,但現在它是一個(gè)小巧、緊湊且功能強大的無(wú)頭 cms 。在 VuePress 中,您使用 Markdown 編寫(xiě)內容,然后將其轉換為預渲染的靜態(tài) HTML 文件。
  該項目有一個(gè)組織良好的捐贈指南和一個(gè)透明的工作流程。它還具有出色的問(wèn)題管理功能。社區有超過(guò) 300 名活躍的貢獻者可以為您提供支持。這是您開(kāi)始為開(kāi)源項目做貢獻的絕佳選擇。
  03Vue店面
  Vuestorefront 是一個(gè)面向電子商務(wù)的 PWA,幾乎可以連接到任何電子商務(wù)后端:它使用無(wú)頭架構。這包括流行的 BigCommerce 平臺、Magento、Shopware 等。 VueStorefront 的一些優(yōu)勢包括移動(dòng)優(yōu)先方法、服務(wù)器端渲染(有利于 SEO)和離線(xiàn)模式。
  該產(chǎn)品擁有一個(gè)發(fā)達的社區:Slack 中有大約 2,000 名開(kāi)發(fā)人員和 180 多名活躍的貢獻者。這一點(diǎn)特別有價(jià)值,因為團隊有一個(gè)清晰的路線(xiàn)圖,所以你作為貢獻者可以選擇你可以做的任務(wù)??偠灾?,這是一個(gè)非常有趣、支持和耗時(shí)的產(chǎn)品。
  04Vuegg
  Vuegg 允許您通過(guò)將組件直接拖放到可視化編輯器中并根據您的選擇移動(dòng)它們的大小來(lái)構建 Vue.js 項目。該項目的目的是將設計和原型設計合并到一個(gè)流程中。
  顯著(zhù)特點(diǎn):
  通過(guò)拖放和移動(dòng)/調整大小來(lái)模擬/恢復組件;
  ·支持標準的鼠標和鍵盤(pán)組合;
  ·響應式預覽(移動(dòng)設備、平板電腦、網(wǎng)絡(luò ));
  ·一套基本的HTML5元素;
  ·材料設計組件(vue-mdc-adapter);
  ·Vuejs源碼生成(下載.zip)。
  這個(gè)項目有一個(gè)清晰的路線(xiàn)圖,你可以直接在 Github 上看到。由于該項目相當新,因此在沒(méi)有貢獻指南的情況下仍有工作正在進(jìn)行,但您可以自由打開(kāi)任何問(wèn)題和 PR。
  05網(wǎng)格體
  Gridsome 與 VuePress 有許多相似之處,但對數據源采用了不同且非常強大的方法。它允許您在應用程序中連接和使用許多不同類(lèi)型的數據,然后將這些數據統一到單個(gè) GraphQL 層中?;旧?,Gridsome 使用 Vue 提供前端功能,使用 GraphQL 進(jìn)行數據管理。
  工作方法可以概括為以下三個(gè)步驟:
  您以 Markdown、JSON、YAML 或 CVS 數據格式提供內容,或從 WordPress 或 Drupal 等導入內容。cms;
  內容被轉換為提供集中數據管理的 GraphQL 層;
  然后使用這些數據使用 Vue 構建您的應用程序。
  在開(kāi)發(fā)方面,文檔有清晰的路線(xiàn)圖、描述良好的變更日志和貢獻指南。貢獻是一個(gè)不錯的選擇。
  06UI 組件
  驗證
  
  Vuetify 根據 MaterialDesign 規范提供了大量精心設計的組件 (80+)。 Vuetify 結合了 Vue.js 和 Material 的所有優(yōu)點(diǎn)。該框架與 RTL 和 VueCLI-3 兼容。 Vuetify 的所有組件都有很好的文檔記錄,并且有清晰的示例。它適用于 Vue 的服務(wù)器端渲染 (SSR)。 Vuetify 支持所有現代 Web 瀏覽器 - 甚至 IE11 和 Safari9+(使用多用途填充)。它還提供了現成的項目腳手架,因此您可以使用一個(gè)命令開(kāi)始構建您的 Vue.js 應用程序。
  它提供了一組基于材料設計的組件,例如:
  ·按鈕;
  ·投資;
  ·卡片;
  ·桌子,
  ·列表。
  Vuetify 背后有一個(gè)充滿(mǎn)活力的社區,有超過(guò) 500 名貢獻者創(chuàng )建了許多 Vuetify 插件。它具有成為優(yōu)秀開(kāi)源的所有主要組成部分:廣泛的文檔、貢獻指南、問(wèn)題管理。但在我們看來(lái),很難做出貢獻,因為社區已經(jīng)很大了。
  07Buefy
  Buefy 為基于 Bulma 的 Vue.js 提供輕量級 UI 組件。 Buefy 有兩個(gè)核心原則:保持簡(jiǎn)單和輕量級。這也解釋了為什么它的唯一依賴(lài)項是 Vue 和 Bulma。盡管它只有 40 多個(gè)組件,但它為您提供了移動(dòng)優(yōu)先且響應迅速的 UI 組件。
  特點(diǎn):
  ·支持MaterialDesign圖標和FontAwesome;
  ·非常輕量級,除了Vue&Bu lma沒(méi)有內部依賴(lài);
  ·大約 88KB min + gzip ;
  ·語(yǔ)義代碼輸出。
  08Vue材質(zhì)
  VUEMaterial 簡(jiǎn)單、輕巧并且完全按照 GoogleMaterial 設計規范構建。 VUE Materials 提供超過(guò) 56 種組件來(lái)構建不同類(lèi)型的布局。一件很棒的事情是材料設計框架具有非常詳盡的文檔。該框架非常輕量級,收錄完整的組件,并且完全符合 Google Material Design 指南。這種設計適合每個(gè)屏幕并支持所有現代瀏覽器。
  路線(xiàn)圖、貢獻指南、良好的文檔和變更日志都在這里。對于喜歡 UI 項目的開(kāi)發(fā)者來(lái)說(shuō),這是一個(gè)不錯的選擇。
  09 應用
  科爾
  Koel 是一種個(gè)人音樂(lè )流媒體服務(wù),您可以根據自己的需要進(jìn)行定制??蛻?hù)端是用 Vue 編寫(xiě)的,后端是用 Laravel 編寫(xiě)的。針對 Web 開(kāi)發(fā)人員,koel 使用了一些更現代的 Web 技術(shù),例如 flexbox、音頻和拖放 API 等等。
  這個(gè)項目在 Github 上很受歡迎,有 52 位貢獻者。不幸的是,沒(méi)有詳細的貢獻指南,但作者在 Github 上寫(xiě)道,您需要在提交任何內容之前打開(kāi)一個(gè)問(wèn)題。還可以選擇通過(guò) Opencollective 贊助該項目。
  我們喜歡這個(gè)項目背后的想法,即制作由社區開(kāi)發(fā)的流媒體服務(wù)。所以,如果你熱愛(ài)音樂(lè )并想提高你的 Vue 技能,貢獻是一個(gè)不錯的選擇。
  10Eagle.js
  Eagle.js 是使用 Vue 構建的強大、靈活且獨特的幻燈片系統。它允許您在演示文稿中創(chuàng )建易于重復使用的組件、幻燈片和樣式。它還支持動(dòng)畫(huà)、主題和交互式小部件,非常適合 Web 演示。微信搜索公眾號:Java后端編程,回復:java接收信息。
  您可以使用此庫做的最重要的事情之一是將您的幻燈片放在一個(gè)單獨的文件中,然后在其他幻燈片中重復使用它。您還可以將特定幻燈片中的幻燈片導入到另一個(gè)幻燈片中。創(chuàng )建者還提供了幾個(gè)模板以輕松開(kāi)始開(kāi)發(fā)。
  該項目有一個(gè)貢獻指南,其中收錄您可以提供幫助的想法。我們認為這是一個(gè)值得花時(shí)間去做的好項目:它確實(shí)幫助了很多人進(jìn)行演示。此外,在 Eagle 的幫助下開(kāi)始學(xué)習 Vue 很容易。
  11 工具包
  Nuxt.js
  Nuxt 是一個(gè)簡(jiǎn)單直接的框架,用于構建通用應用程序:服務(wù)器渲染應用程序、單頁(yè)應用程序、漸進(jìn)式 Web 應用程序,或者僅將其用作靜態(tài)站點(diǎn)生成器。它也是模塊化的,所以你可以只使用你的頁(yè)面需要的模塊。簡(jiǎn)而言之,Nuxt 讓您免于構建和優(yōu)化頁(yè)面的工作。 Nuxt.js 具有模塊化架構,有 50 多個(gè)模塊可供選擇。
  特點(diǎn):
  ·熱代碼重載;
  ·服務(wù)器端渲染或單頁(yè)應用或靜態(tài)生成,任君選擇;
  ·使用nuxt.config.js文件進(jìn)行配置;
  ·每頁(yè)代碼拆分;
  ·使用layouts/目錄自定義布局;
  ·僅加載關(guān)鍵的 CSS(頁(yè)面級別)。
  Nuxt 成為 Vue 開(kāi)發(fā)不可或缺的一部分,擁有眾多貢獻者和廣泛的社區。我們會(huì )選擇為此工具做出貢獻,因為我們知道社區將幫助您發(fā)展技能并教給您一些新知識。
  
  12類(lèi)星體
  Quasar 是一個(gè)通用的、支持 Vue 的框架,它允許您使用相同的代碼庫為不同的平臺編寫(xiě)應用程序:SPA、PWA、SSR 應用程序、混合移動(dòng)應用程序或多平臺桌面應用程序。類(lèi)星體有多達 81 個(gè)組件。
  有一個(gè)很好的文檔和許多旨在提高性能和響應能力的組件。 Quasar 默認集成了最佳實(shí)踐(HTML/CSS/JS 縮小、緩存破壞、樹(shù)抖動(dòng)、源映射、延遲加載的代碼拆分、ES6 傳輸、代碼鏈接、可訪(fǎng)問(wèn)性),因此您可以主要關(guān)注應用程序的功能。它還提供了一個(gè) cli 工具,可以輕松地為新項目構建腳手架。
  該框架有一個(gè)很棒的社區、支持聊天和論壇,以及明顯的貢獻指南。此外,您可以通過(guò)捐款來(lái)支持該工具。微信搜索公眾號:前端技術(shù)編程,回復:前端獲取信息。
  13BootstrapVue
  Boot Vue 是一個(gè)基于 Bootstrap 庫的 UI 工具包。它只是用 Vue 代碼替換常規引導組件中的 JavaScript。借助 BootstrapVue,您可以使用 Vue.js 和世界上最流行的前端 CSS 庫 - Bootstrapv4 在 Web 上構建響應式、移動(dòng)優(yōu)先和 ARIA 可訪(fǎng)問(wèn)的項目。它還可以輕松與 Nuxt.js 集成。
  文檔內容廣泛,再加上 Discord 的強大社區支持,使其成為啟動(dòng)項目和參與貢獻的安全選擇。
  14 開(kāi)發(fā)者工具
  狀態(tài)
  Statusfy 是一個(gè)完全開(kāi)源的狀態(tài)頁(yè)面系統。 Statusfy 站點(diǎn)是基于 Eleventy、Vue、Nuxt.js 和 TailwindCSS 構建的 Web 應用程序。
  這很酷,因為:
  ·Markdown 支持;
  ·這是一個(gè)漸進(jìn)式網(wǎng)絡(luò )應用程序;
  ·多語(yǔ)言支持;
  ·易于定制。
  對于社區管理和支持,該產(chǎn)品具有社區聊天、大量教程、提示、更新和博客。它還具有廣泛的文檔和貢獻指南。
  我們建議對這個(gè)項目做出貢獻,因為它是一個(gè)非常棒的工具,可以讓開(kāi)發(fā)人員的生活變得非常輕松。此外,您將熟悉 Vue 的所有主要技術(shù)。
  15Cachet
  Cachet 是一個(gè)使用 Vue 和 Bootstrap 制作的強大的開(kāi)源狀態(tài)頁(yè)面系統。它內置了 10 種語(yǔ)言。Cachet 捆綁了一個(gè)簡(jiǎn)單(但功能強大)的 JSON API。此外,使用 Cachet,您可以提前安排活動(dòng)。在儀表板中,您可以設置指標 - 一種衡量某事的方法,無(wú)論是正常運行時(shí)間、錯誤率還是完全隨機的。
  Slack 擁有一個(gè)相當大的社區,其中有非?;钴S的貢獻者。開(kāi)始為開(kāi)源社區做出貢獻是個(gè)好主意 - 活躍的社區、中型項目、好主意。
  16Vee驗證
  VeeValidate 是一個(gè)基于模板的 Vue.js 驗證框架,允許您驗證輸入并顯示錯誤。
  由于它是基于模板的,您只需為每個(gè)輸入指定在值更改時(shí)應使用哪個(gè)驗證器。將為支持的 40 多個(gè)區域自動(dòng)生成錯誤。許多規則開(kāi)箱即用。
  特點(diǎn):
  ·熟悉且易于設置的基于模板的驗證;
  ·i18n 支持和 40 多個(gè)地區的錯誤消息;
  ·異步和自定義規則支持;
  ·用 TypeScript 編寫(xiě);
  ·沒(méi)有依賴(lài)關(guān)系。
  VeeValidate 處理表單驗證的主要痛點(diǎn),并以最靈活的方式處理它們:
  ·能夠為您的用戶(hù)設計復雜的用戶(hù)體驗;
  ·最常見(jiàn)的驗證是內置的;
  ·跨領(lǐng)域驗證;
  ·用于增強表單的可訪(fǎng)問(wèn)性和樣式的實(shí)用程序;
  ·本地化內置于核心。
  團隊歡迎大家為項目做出貢獻,并擁有良好的文檔和貢獻指南。它也有一些很好的例子和一個(gè)很棒的社區。
  結論
  我們采集了 Vue 上最有用和最成熟的開(kāi)源項目。我們要再次指出:首先,在選擇受資助項目之前,請注意以下幾點(diǎn): 文檔和貢獻指南 另外,選擇您喜歡的項目,無(wú)論是否受歡迎。如果您希望我們在此集合中收錄任何其他工具,請寫(xiě)信給我們。我們希望您分享此 文章 以幫助人們了解偉大的開(kāi)源項目。
  解決方案:新網(wǎng)站怎么樣才能快速優(yōu)化排名呢?
  網(wǎng)站上線(xiàn)后,有很多問(wèn)題需要面對。同樣要注意幾個(gè)工作流程,讓新站更快參與排名。一起來(lái)看看吧。
  新網(wǎng)站如何快速優(yōu)化你的排名
  一、很多缺失的內容
  新站上線(xiàn)后,需要大量的內容。如果前期只有一個(gè)人優(yōu)化網(wǎng)站,那么需要每天定時(shí)更新內容,并確定每日更新文章的次數和頻率,讓蜘蛛根據爬取我們設置的更新時(shí)間。對于新站點(diǎn),它不僅保持更新頻率,而且穩定蜘蛛爬行。同時(shí),大量的內容需要有價(jià)值,字數必須達到一定的量,這樣蜘蛛的爬取才不會(huì )影響網(wǎng)站的總分。
  
  二、網(wǎng)站TKD 書(shū)面
  網(wǎng)站上線(xiàn)前需要完成所有網(wǎng)站頁(yè)面的TDK,除了文章通過(guò)標題自行生成,最重要的是首頁(yè)和欄目頁(yè)面,通過(guò)我們的公式關(guān)鍵詞的順序和內容,幫助用戶(hù)通過(guò)搜索快速檢索到我們的網(wǎng)站。
  新網(wǎng)站如何快速優(yōu)化你的排名
  三、網(wǎng)站代碼簡(jiǎn)潔
  
  在制定網(wǎng)站框架之前,一定要想想網(wǎng)站上線(xiàn)后每天爬取的蜘蛛是否能完全爬取到我們的網(wǎng)站內容。如果你的站點(diǎn)代碼數量很大,而且大部分內容都是采集,對整個(gè)站點(diǎn)的排名有影響。我們能做的就是推出高質(zhì)量的內容。
  四、網(wǎng)站用戶(hù)體驗
  這是網(wǎng)站上線(xiàn)后最重要的考慮,因為網(wǎng)站上線(xiàn)后,會(huì )先被搜索引擎審核。審核后,將是用戶(hù)。如果用戶(hù)不滿(mǎn)意,首先影響排名的是轉化率。在做網(wǎng)站的時(shí)候,首先要考慮用戶(hù)的想法和需求,這樣頁(yè)面的留存率才會(huì )高。
  新站上線(xiàn)后,我們能做的就是先填寫(xiě)內容,但在質(zhì)量上,我們需要保證滿(mǎn)足用戶(hù)的需求,這樣搜索引擎才會(huì )給我們一個(gè)好的排名根據總分網(wǎng)站.

優(yōu)化的解決方案:高效PHP開(kāi)發(fā)人員的十大PHP開(kāi)發(fā)工具

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 187 次瀏覽 ? 2022-09-24 08:10 ? 來(lái)自相關(guān)話(huà)題

  優(yōu)化的解決方案:高效PHP開(kāi)發(fā)人員的十大PHP開(kāi)發(fā)工具
  Caption: 如何選擇最好的 PHP 開(kāi)發(fā)工具
  PHP 是用于構建 網(wǎng)站 和 Web 應用程序的最快和最廣泛使用的服務(wù)器端腳本語(yǔ)言。
  開(kāi)發(fā)人員更喜歡 PHP 或其他一些腳本語(yǔ)言(例如 Python 和 Ruby)有幾個(gè)很好的理由。PHP 有非常詳細的文檔、許多現成的腳本、龐大的社區和得到良好支持的框架。為了讓PHP開(kāi)發(fā)更容易一些,一些專(zhuān)家開(kāi)發(fā)了很多PHP開(kāi)發(fā)工具,可以提高編程效率。PHP 工具旨在提供完美的 IDE(集成開(kāi)發(fā)環(huán)境),PHP 開(kāi)發(fā)人員可以利用它高效地構建引人入勝、創(chuàng )新且功能豐富的 PHP 項目。
  當今市場(chǎng)充斥著(zhù)如此多的 PHP 開(kāi)發(fā)工具,因此選擇最好的工具可能成為一項具有挑戰性的任務(wù)。以下是我們挑選的在 Web 開(kāi)發(fā)社區中最受關(guān)注的 10 大 PHP 開(kāi)發(fā)工具。
  1. PHPStorm
  PHPStorm 輕量、快速、流暢,是 PHPer 選擇開(kāi)發(fā)工具的標準。此 PHP IDE 可與 Zend Framework、Symfony、Yii、Laravel 和 CakePHP 等絕大多數 PHP 框架以及 Drupal、Magento 和 WordPress 等流行的內容管理系統 (cms) 配合使用。
  除了代碼重構、單元測試和調試之外,IDE 還為 CSS、HTML5 和 JavaScript 等主流前端技術(shù)提供實(shí)時(shí)編輯支持。它還使開(kāi)發(fā)人員能夠與數據庫、版本控制系統、遠程部署、編寫(xiě)器、命令行工具和 REST 客戶(hù)端緊密集成。
  PHPStorm 的特點(diǎn):
  PHPStorm 的特點(diǎn):
  2. Zend Studio
  大多數 Web 開(kāi)發(fā)人員會(huì )選擇 Zend Studio 以獲得最快的速度。在 Zend Studio 中編寫(xiě)和調試代碼不需要程序員額外的工作和時(shí)間。在支持 PHP 7 的同時(shí),它通過(guò)集成 Xdebug 和 Zend Debugger 等來(lái)調試 PHP 腳本。這個(gè)功能齊全的 PHP IDE 具有一組令人興奮的功能,可以在包括云服務(wù)器在內的各種服務(wù)器上部署應用程序。Zend Studio 也可以通過(guò) Eclipse 插件進(jìn)行擴展。
  Zend Studio 特點(diǎn):
  Zend Studio 特色:
  3. NuSphere PhpED
  PhpED 是 NuSphere 提供的 PHP 專(zhuān)有集成開(kāi)發(fā)工具。此 PHP IDE 收錄高級 PHP 編輯器、Profiler、PHP 調試工具、數據庫客戶(hù)端和代碼優(yōu)化工具,為開(kāi)發(fā)人員提供了多種工具和優(yōu)化器,讓整個(gè) Web 開(kāi)發(fā)過(guò)程不再繁瑣。PhpEd 使用商用 PHP 加速器 PhpExpress 加速應用程序開(kāi)發(fā)過(guò)程。此 IDE 非常適合開(kāi)發(fā)復雜的 網(wǎng)站 和 Web 應用程序。它支持 JavaScript、HTML 和 CSS3,并廣泛支持 PHP 7.1。它的重構功能使開(kāi)發(fā)人員能夠有效地改進(jìn)代碼。PhpED 可以使用最流行的 PHP 框架,如 Laravel、Zend 和 Yii 等。
  
  PhpED 特點(diǎn):
  PhpED 專(zhuān)長(cháng):
  4. 網(wǎng)豆
  該工具具有支持多種語(yǔ)言的豐富功能。NetBeans 最初是用于 Java 開(kāi)發(fā)的,目前的版本定位是輕量級、速度更快并支持 PHP 開(kāi)發(fā)服務(wù)。它還支持對其他編程語(yǔ)言的擴展,例如 C、C++ 和 HTML5)。它支持開(kāi)發(fā)大型Web應用程序和不同的本地語(yǔ)言,如日語(yǔ)、俄語(yǔ)、英語(yǔ)、巴西葡萄牙語(yǔ)以及簡(jiǎn)體中文。
  這個(gè)開(kāi)源 PHP 開(kāi)發(fā)工具可以與所有流行的 PHP 框架一起使用,包括 Zend、Symfony 2、CakePHP、FuelPHP、Smarty 和 WordPress。
  NetBeans 功能:
  NetBeans 專(zhuān)業(yè)知識:
  5.云9
  Cloud9是AWS提供的一款開(kāi)源云IDE,為數百種編程語(yǔ)言(PHP、C、C++、JavaScript、Python等)提供開(kāi)發(fā)環(huán)境。開(kāi)發(fā)人員可以使用預配置的環(huán)境立即開(kāi)始編碼,構建具有瀏覽器兼容性測試和實(shí)時(shí)預覽等功能的 Web 應用程序,并使用協(xié)作編碼功能與同事無(wú)縫協(xié)作。
  Cloud 9 為創(chuàng )建無(wú)服務(wù)器應用程序提供了完美的體驗,能夠遠程定義資源、執行無(wú)服務(wù)器應用程序并對其進(jìn)行調試。程序員可以與同事共享開(kāi)發(fā)環(huán)境,能夠配對程序并跟蹤實(shí)時(shí)輸入。Cloud 9 確保輕松構建可在瀏覽器中編碼的無(wú)服務(wù)器應用程序。
  Cloud9 特點(diǎn):
  Cloud9 專(zhuān)長(cháng):
  6. Aptana 工作室
  Aptana Studio 是一個(gè)開(kāi)源 PHP 開(kāi)發(fā)工具,用于與各種服務(wù)器端和客戶(hù)端 Web 技術(shù)集成。PHP、Python、CSS3、Ruby on Rails、Ruby 和 HTML5 都是這些堆棧的一部分。它支持調試器和命令行界面,使 PHP 應用程序開(kāi)發(fā)更容易。它允許 PHP 程序員在同一環(huán)境中構建和測試 Web 應用程序。它帶有 SFTP、FTP 和自定義 IDE。這個(gè)強大的 Web 開(kāi)發(fā)引擎利用了 Eclipse 的靈活性,并收錄有關(guān)高級 Web 瀏覽器中每個(gè)元素的支持范圍的詳細信息。Aptana Studio 是一個(gè)高性能 PHP IDE,它收錄一系列強大的功能來(lái)提高程序員的工作效率。
  Aptana Studio 特點(diǎn):
  阿普塔納專(zhuān)長(cháng):
  7. 代碼龍蝦
  
  Codelobster Software 的 CodeLobster IDE 也是社區中最受歡迎的 PHP 開(kāi)發(fā)工具之一。它支持大多數 PHP 框架,如 Symfony、Laravel、CodeIgniter、CakePHP、Magento、Joomla 和 Drupal。CodeLobster IDE 簡(jiǎn)化了這個(gè)過(guò)程。無(wú)需記住參數、函數、屬性和標簽的名稱(chēng)——它已經(jīng)實(shí)現了 HTML、JavaScript、PHP 和 CSS 的自動(dòng)完成功能。使用其內部 PHP 調試器,您可以在本地驗證您的代碼。此外,此 PHP 工具會(huì )自動(dòng)檢測當前服務(wù)器的設置并配置相關(guān)文件以使用免費調試器。它還支持Drupal、WordPress、Magento 和Joomla 等主流cms。
  CodeLobster 特點(diǎn):
  CodeLobster 特色:
  8.崇高文本
  Sublime Text 是 PHP 開(kāi)發(fā)的領(lǐng)先測試編輯器。但它不是 IDE。通過(guò)安裝某些插件和包,您可以使其成為開(kāi)發(fā) PHP 應用程序的合適編輯器。這個(gè)跨平臺的源代碼編輯器原生支持多種編程和標記語(yǔ)言。它可以通過(guò)自定義 UI 工具包進(jìn)行高度定制。
  崇高文本功能:
  崇高文本專(zhuān)業(yè):
  9. PHP 調試欄
  PHPDebugbar 是一個(gè) PHP 調試器,可以與任何項目一起運行并顯示各種 Web 應用程序狀態(tài)的數據。這個(gè) PHP 開(kāi)發(fā)工具由兩部分組成:mainDebugBar 對象、數據采集器和渲染器。StandardDebugBar 收錄一組預配置的內置采集器。
  除了 PHP,還可以捕獲 JavaScript 和 HTML 數據。此外,PHPDebugbar 可以檢測 CSS 元素,監控網(wǎng)絡(luò )。它是 Web 應用程序分析數據的最佳選擇。您可以創(chuàng )建自己的集合以便于集成。
  PHPDebugbar 函數:
  PHPDebugbar 特色:
  10.日食
  當你搜索最好的 PHP 開(kāi)發(fā)工具時(shí),大多數搜索結果都會(huì )在他們的列表中收錄 Eclipse 編輯器,它是一個(gè)完整的開(kāi)發(fā)工具,在頂級 PHP 工具列表中絕對排名靠前。您可以從各種插件中自由選擇,從而更輕松地開(kāi)發(fā)和簡(jiǎn)化您的代碼。還可以幫助定制和擴展IDE以滿(mǎn)足項目的需要。這個(gè) PHP IDE 可以支持 GUI 和非 GUI 應用程序。這個(gè)跨平臺的 PHP 編輯器是大型 PHP 項目的理想選擇。
  日食特點(diǎn):
  日食專(zhuān)長(cháng):
  上面列出的每個(gè)工具都有自己獨特的功能,可以讓開(kāi)發(fā)人員快速輕松地創(chuàng )建 PHP網(wǎng)站 和應用程序,但是這些≈不是市場(chǎng)上唯一的開(kāi)發(fā)工具,您可以找到更多付費或免費的編輯器工具.
  解決方案:SEO(搜索引擎優(yōu)化)重點(diǎn)知識
  電商圈SEO(搜索引擎優(yōu)化)基礎知識基礎課程目錄一、SEO基本概念及模型二、搜索引擎關(guān)鍵詞三、搜索鏈接引擎四、頁(yè)面內部元素優(yōu)化五、關(guān)于百度和GOOGLE一、SEO基本概念和模型1、SEO定義2、搜索引擎(SE)工作model3、搜索引擎優(yōu)化 (SEO) 工作模型1、SEO 定義 SEO=SearchEngineOptimization 搜索引擎優(yōu)化是一種使特定頁(yè)面在搜索結果中獲得有利排名的方法。搜索引擎算法具有高度機密性,任何搜索引擎優(yōu)化都是基于猜測,需要長(cháng)期觀(guān)察、總結、預算和逐步驗證。搜索引擎優(yōu)化必須從查看者的角度考慮,因為搜索引擎算法也是為了滿(mǎn)足搜索者而設計的。 SEO工作模式我解釋??梢钥吹絊EO模型中有網(wǎng)站A和網(wǎng)站B,那么它們是如何輸入我們指定的內容的呢?哦,通過(guò)關(guān)鍵字(我稍后會(huì )談到關(guān)鍵字) 為什么圖像的中心是頁(yè)面而不是 網(wǎng)站?因為給外鏈設置關(guān)鍵詞的目的是讓用戶(hù)進(jìn)入我們希望他進(jìn)入的頁(yè)面,而不是宣傳整個(gè)網(wǎng)站,而外鏈、關(guān)鍵詞和這個(gè)頁(yè)面的內容是相關(guān)的。電子商務(wù)二、搜索引擎關(guān)鍵詞1、搜索引擎關(guān)鍵詞定義2、如何識別關(guān)鍵詞3、關(guān)鍵詞很多人都說(shuō)關(guān)鍵詞,但它們是什么?它是一個(gè)我們發(fā)現很少人理解的關(guān)鍵字,所以我們提出了搜索引擎關(guān)鍵字的概念來(lái)區分頁(yè)面關(guān)鍵字TAG,1、搜索引擎關(guān)鍵字定義: 搜索引擎關(guān)鍵字:搜索者習慣與被使用密不可分搜索引擎識別的漢字組合。
  不同于傳統口語(yǔ)的關(guān)鍵字。它必須在標題中,同時(shí)是頁(yè)面的標題,以及整個(gè)頁(yè)面的主要內容??梢蕴崛?lái)自搜索引擎的相關(guān)搜索。注意第三段必須在標題中,即頁(yè)面的標題,也是整個(gè)頁(yè)面的主要內容。 2、如何識別關(guān)鍵詞:為搜索引擎優(yōu)化識別關(guān)鍵詞的第一步需要一定的語(yǔ)言組織能力和對搜索引擎的理解。確認關(guān)鍵詞的三個(gè)原則:準確性、相關(guān)性和搜索習慣。關(guān)鍵字分詞符號的區別:空格:模糊查詢(xún)“-”、“-”:模糊查詢(xún)分詞和解釋“|”:獨立查詢(xún)絕對分詞“_”:獨立查詢(xún)絕對分詞關(guān)鍵字1關(guān)鍵字2關(guān)鍵字3關(guān)鍵字字1_關(guān)鍵字2_關(guān)鍵詞3,其中下劃線(xiàn)和下劃線(xiàn)也不同,_例如:以陳冠希的消息為例,陳冠希計劃8月回港支持農夫公司,將陳煥仁踢走_港臺明星新聞_娛樂(lè )_騰訊網(wǎng),這是騰訊網(wǎng)的新聞??梢钥吹匠诵侣勵^條之外,網(wǎng)站 列都在 _ 之后。騰訊的目的是對關(guān)鍵詞進(jìn)行細分,突出頭條。關(guān)鍵詞劃分的時(shí)候,要么搜索計劃8月回港支持農民公司踢陳煥仁的陳冠希,要么搜索騰訊。如果我們用空格分隔,陳冠希和Gillian GIGI喜歡在香港拍照,那么我們搜索“陳冠希的GIGI照片”也會(huì )搜索到這個(gè)標題。這就是模糊搜索和拆分關(guān)鍵詞搜索的區別。體現在搜索結果上,大家可以試試,很多上網(wǎng)很久的網(wǎng)友都知道,百度不僅可以搜索吃等詞,還可以搜索川菜,中間加空格的原理兩個(gè)關(guān)鍵字是一樣的,這個(gè)是關(guān)于關(guān)鍵字的處理,基本上keyword->title->h1->頁(yè)面內容基本上就是一個(gè)頁(yè)??面,最好只設計一個(gè)H1,H1是一個(gè)key的一個(gè)頁(yè)面。如果百度的蜘蛛爬過(guò)來(lái),會(huì )先爬標題,然后再往下爬到H1H2H3H4。如果爬到多個(gè)H1,爬蟲(chóng)就傻了,因為它不知道哪個(gè)H1更重要。最好的做法是文章 的標題用 H1 括起來(lái),與標題相同。關(guān)鍵字相關(guān)性低的頁(yè)面鏈接,只能增加鏈接的廣度。
  
  不知道大家是怎么理解它的意思的。如果你想做外部鏈接!那么外鏈的目的地就是中間的關(guān)鍵詞,所以你做的外鏈必須和目標頁(yè)面中的關(guān)鍵詞相同或相似。如果相關(guān)性不高,只能增加鏈接的廣度,不會(huì )增加網(wǎng)站的權重那么網(wǎng)站的權重是多少呢?一般來(lái)說(shuō),搜索引擎都會(huì )給出一個(gè)網(wǎng)站的評價(jià),比如gg的PR值。當然,百度也有明確表示是對網(wǎng)站的評價(jià)。當然,評價(jià)越高,你的網(wǎng)站就越好。如果你的網(wǎng)站@網(wǎng)站高權重蜘蛛比較勤奮。不僅他們一個(gè)人來(lái),還帶了一家老少皆宜1、域名優(yōu)化百度喜歡拼音GOOGLE喜歡英文是一個(gè)網(wǎng)站首先好域名現在看來(lái)百度喜歡.com勝過(guò).cn,所以如果你想做一個(gè)網(wǎng)站,試著(zhù)注冊.com。拼音,因為大部分的自然流量來(lái)自百度,如果一個(gè)域名是拼音,它可能或多或少的流量沒(méi)有內容。 2、URL的優(yōu)化目錄在建站過(guò)程中不超過(guò)三級靜態(tài)內容有關(guān)鍵字存儲目錄不超過(guò)三層,百度可以抓取最深的目錄,GG更適合,但加深收錄 的over層中的一級目錄會(huì )降低權限,或者根本就沒(méi)有 收錄 ,另外,直接在根目錄下創(chuàng )建一個(gè)列目錄確實(shí)有很多好處。例如,該組中的許多人都使用審查程序。我們在最短的時(shí)間內將其更改為偽靜態(tài)結果。在沒(méi)有內容的情況下,我們上傳了3天,收到了。 500多頁(yè)采集了500多頁(yè),太靜態(tài)了!淺目錄!好域名!必不可少! 3、4、優(yōu)化圖片優(yōu)化我已經(jīng)講過(guò)alt的優(yōu)化了。使用模糊或分割取決于您。對于圖片優(yōu)化,很多人在做網(wǎng)站的時(shí)候都會(huì )使用大圖,放在網(wǎng)站最顯眼的位置,但是很多人并沒(méi)有加圖片的ALT屬性,想象一下爬蟲(chóng)搜索引擎來(lái)到你的頁(yè)面,到處都是img,蜘蛛可能是個(gè)書(shū)呆子,他最想看到的是大奶,但是到處都是img,沒(méi)有名字,他看不到,他們是所有的代碼,所以他會(huì )一一過(guò)一遍。不幸的是,他永遠不會(huì )知道圖片中的內容,然后他會(huì )感到無(wú)聊并且不會(huì )再爬行。那么在電商圈,我們用alt給每張圖片改個(gè)名字,例如:
  ,有誰(shuí)知道這是什么圖片??jì)蓚€(gè)都不知道!只知道是圖片,如果我們添加alt呢?
  
  哦哦哦哦~~原來(lái)是木托蘭,蜘蛛看著(zhù)我!蘭蘭!直接上去,然后仔細采集,然后就會(huì )出現在百度的圖片搜索中,這點(diǎn)很重要!記得給你的網(wǎng)站圖片加alt,5、表格優(yōu)化,現在比較流行div+cssth盡量不要嵌套多層,盡量用吧
<p>+css 不過(guò)我還是想說(shuō)說(shuō)表格。建站時(shí)建議不要嵌套太多表。一般不應超過(guò)4層表。要求是三層。最好使用DIV,可能是DVI+CSS。費時(shí)費力,但好處是無(wú)法言喻的,所以有人說(shuō)代碼不簡(jiǎn)潔,CSS很復雜,CSS確實(shí)很復雜,但是蜘蛛不會(huì )看CSS,只會(huì )看在你的內容!對 js 的 css 外部調用也是如此。相對來(lái)說(shuō),DIV+CSS確實(shí)比TABLE好很多。當然,這是在 SEO 方面。 Flash 優(yōu)化搜索引擎無(wú)法抓取嵌入的 html。最好提供 html 版本的幫助。不是為了提高頁(yè)面的美化效果。不要選擇使用FLASH。很多人喜歡在 網(wǎng)站 的主頁(yè)上使用 FLASH 幻燈片。我不知道。你發(fā)現如果列表中的FLASH沒(méi)有消息,那么你的消息可能不是收錄,那么你的消息可能不是收錄,他是看不懂的,就像看圖片沒(méi)有ALT,他是瞎子!原因很簡(jiǎn)單,蜘蛛看不懂!不要使用 js 進(jìn)行導航。導航調用JS很方便,所以不用重建整個(gè)站點(diǎn)就可以改變導航,可惜蜘蛛又傻又幼稚,看不懂,8、代碼優(yōu)化簡(jiǎn)潔和高效。 div + css盡量不要用JS調用8、代碼優(yōu)化,簡(jiǎn)潔高效規范優(yōu)化部分也講完了。先說(shuō)一下百度和GOOGLE的區別。百度就像一個(gè)愛(ài)新厭舊頁(yè)面的年輕人。 GOOGLE 就像一個(gè)古老的古董。他喜歡舊的和被廣泛認可的有價(jià)值的頁(yè)面。 N個(gè)外部鏈接,但是你的關(guān)鍵字搜索結果排名一段時(shí)間后慢慢下降的主要原因,SEO有效,如果你把一個(gè)頁(yè)面作為一個(gè)整體,你會(huì )做百度如果你放一個(gè) 查看全部

  優(yōu)化的解決方案:高效PHP開(kāi)發(fā)人員的十大PHP開(kāi)發(fā)工具
  Caption: 如何選擇最好的 PHP 開(kāi)發(fā)工具
  PHP 是用于構建 網(wǎng)站 和 Web 應用程序的最快和最廣泛使用的服務(wù)器端腳本語(yǔ)言。
  開(kāi)發(fā)人員更喜歡 PHP 或其他一些腳本語(yǔ)言(例如 Python 和 Ruby)有幾個(gè)很好的理由。PHP 有非常詳細的文檔、許多現成的腳本、龐大的社區和得到良好支持的框架。為了讓PHP開(kāi)發(fā)更容易一些,一些專(zhuān)家開(kāi)發(fā)了很多PHP開(kāi)發(fā)工具,可以提高編程效率。PHP 工具旨在提供完美的 IDE(集成開(kāi)發(fā)環(huán)境),PHP 開(kāi)發(fā)人員可以利用它高效地構建引人入勝、創(chuàng )新且功能豐富的 PHP 項目。
  當今市場(chǎng)充斥著(zhù)如此多的 PHP 開(kāi)發(fā)工具,因此選擇最好的工具可能成為一項具有挑戰性的任務(wù)。以下是我們挑選的在 Web 開(kāi)發(fā)社區中最受關(guān)注的 10 大 PHP 開(kāi)發(fā)工具。
  1. PHPStorm
  PHPStorm 輕量、快速、流暢,是 PHPer 選擇開(kāi)發(fā)工具的標準。此 PHP IDE 可與 Zend Framework、Symfony、Yii、Laravel 和 CakePHP 等絕大多數 PHP 框架以及 Drupal、Magento 和 WordPress 等流行的內容管理系統 (cms) 配合使用。
  除了代碼重構、單元測試和調試之外,IDE 還為 CSS、HTML5 和 JavaScript 等主流前端技術(shù)提供實(shí)時(shí)編輯支持。它還使開(kāi)發(fā)人員能夠與數據庫、版本控制系統、遠程部署、編寫(xiě)器、命令行工具和 REST 客戶(hù)端緊密集成。
  PHPStorm 的特點(diǎn):
  PHPStorm 的特點(diǎn):
  2. Zend Studio
  大多數 Web 開(kāi)發(fā)人員會(huì )選擇 Zend Studio 以獲得最快的速度。在 Zend Studio 中編寫(xiě)和調試代碼不需要程序員額外的工作和時(shí)間。在支持 PHP 7 的同時(shí),它通過(guò)集成 Xdebug 和 Zend Debugger 等來(lái)調試 PHP 腳本。這個(gè)功能齊全的 PHP IDE 具有一組令人興奮的功能,可以在包括云服務(wù)器在內的各種服務(wù)器上部署應用程序。Zend Studio 也可以通過(guò) Eclipse 插件進(jìn)行擴展。
  Zend Studio 特點(diǎn):
  Zend Studio 特色:
  3. NuSphere PhpED
  PhpED 是 NuSphere 提供的 PHP 專(zhuān)有集成開(kāi)發(fā)工具。此 PHP IDE 收錄高級 PHP 編輯器、Profiler、PHP 調試工具、數據庫客戶(hù)端和代碼優(yōu)化工具,為開(kāi)發(fā)人員提供了多種工具和優(yōu)化器,讓整個(gè) Web 開(kāi)發(fā)過(guò)程不再繁瑣。PhpEd 使用商用 PHP 加速器 PhpExpress 加速應用程序開(kāi)發(fā)過(guò)程。此 IDE 非常適合開(kāi)發(fā)復雜的 網(wǎng)站 和 Web 應用程序。它支持 JavaScript、HTML 和 CSS3,并廣泛支持 PHP 7.1。它的重構功能使開(kāi)發(fā)人員能夠有效地改進(jìn)代碼。PhpED 可以使用最流行的 PHP 框架,如 Laravel、Zend 和 Yii 等。
  
  PhpED 特點(diǎn):
  PhpED 專(zhuān)長(cháng):
  4. 網(wǎng)豆
  該工具具有支持多種語(yǔ)言的豐富功能。NetBeans 最初是用于 Java 開(kāi)發(fā)的,目前的版本定位是輕量級、速度更快并支持 PHP 開(kāi)發(fā)服務(wù)。它還支持對其他編程語(yǔ)言的擴展,例如 C、C++ 和 HTML5)。它支持開(kāi)發(fā)大型Web應用程序和不同的本地語(yǔ)言,如日語(yǔ)、俄語(yǔ)、英語(yǔ)、巴西葡萄牙語(yǔ)以及簡(jiǎn)體中文。
  這個(gè)開(kāi)源 PHP 開(kāi)發(fā)工具可以與所有流行的 PHP 框架一起使用,包括 Zend、Symfony 2、CakePHP、FuelPHP、Smarty 和 WordPress。
  NetBeans 功能:
  NetBeans 專(zhuān)業(yè)知識:
  5.云9
  Cloud9是AWS提供的一款開(kāi)源云IDE,為數百種編程語(yǔ)言(PHP、C、C++、JavaScript、Python等)提供開(kāi)發(fā)環(huán)境。開(kāi)發(fā)人員可以使用預配置的環(huán)境立即開(kāi)始編碼,構建具有瀏覽器兼容性測試和實(shí)時(shí)預覽等功能的 Web 應用程序,并使用協(xié)作編碼功能與同事無(wú)縫協(xié)作。
  Cloud 9 為創(chuàng )建無(wú)服務(wù)器應用程序提供了完美的體驗,能夠遠程定義資源、執行無(wú)服務(wù)器應用程序并對其進(jìn)行調試。程序員可以與同事共享開(kāi)發(fā)環(huán)境,能夠配對程序并跟蹤實(shí)時(shí)輸入。Cloud 9 確保輕松構建可在瀏覽器中編碼的無(wú)服務(wù)器應用程序。
  Cloud9 特點(diǎn):
  Cloud9 專(zhuān)長(cháng):
  6. Aptana 工作室
  Aptana Studio 是一個(gè)開(kāi)源 PHP 開(kāi)發(fā)工具,用于與各種服務(wù)器端和客戶(hù)端 Web 技術(shù)集成。PHP、Python、CSS3、Ruby on Rails、Ruby 和 HTML5 都是這些堆棧的一部分。它支持調試器和命令行界面,使 PHP 應用程序開(kāi)發(fā)更容易。它允許 PHP 程序員在同一環(huán)境中構建和測試 Web 應用程序。它帶有 SFTP、FTP 和自定義 IDE。這個(gè)強大的 Web 開(kāi)發(fā)引擎利用了 Eclipse 的靈活性,并收錄有關(guān)高級 Web 瀏覽器中每個(gè)元素的支持范圍的詳細信息。Aptana Studio 是一個(gè)高性能 PHP IDE,它收錄一系列強大的功能來(lái)提高程序員的工作效率。
  Aptana Studio 特點(diǎn):
  阿普塔納專(zhuān)長(cháng):
  7. 代碼龍蝦
  
  Codelobster Software 的 CodeLobster IDE 也是社區中最受歡迎的 PHP 開(kāi)發(fā)工具之一。它支持大多數 PHP 框架,如 Symfony、Laravel、CodeIgniter、CakePHP、Magento、Joomla 和 Drupal。CodeLobster IDE 簡(jiǎn)化了這個(gè)過(guò)程。無(wú)需記住參數、函數、屬性和標簽的名稱(chēng)——它已經(jīng)實(shí)現了 HTML、JavaScript、PHP 和 CSS 的自動(dòng)完成功能。使用其內部 PHP 調試器,您可以在本地驗證您的代碼。此外,此 PHP 工具會(huì )自動(dòng)檢測當前服務(wù)器的設置并配置相關(guān)文件以使用免費調試器。它還支持Drupal、WordPress、Magento 和Joomla 等主流cms。
  CodeLobster 特點(diǎn):
  CodeLobster 特色:
  8.崇高文本
  Sublime Text 是 PHP 開(kāi)發(fā)的領(lǐng)先測試編輯器。但它不是 IDE。通過(guò)安裝某些插件和包,您可以使其成為開(kāi)發(fā) PHP 應用程序的合適編輯器。這個(gè)跨平臺的源代碼編輯器原生支持多種編程和標記語(yǔ)言。它可以通過(guò)自定義 UI 工具包進(jìn)行高度定制。
  崇高文本功能:
  崇高文本專(zhuān)業(yè):
  9. PHP 調試欄
  PHPDebugbar 是一個(gè) PHP 調試器,可以與任何項目一起運行并顯示各種 Web 應用程序狀態(tài)的數據。這個(gè) PHP 開(kāi)發(fā)工具由兩部分組成:mainDebugBar 對象、數據采集器和渲染器。StandardDebugBar 收錄一組預配置的內置采集器。
  除了 PHP,還可以捕獲 JavaScript 和 HTML 數據。此外,PHPDebugbar 可以檢測 CSS 元素,監控網(wǎng)絡(luò )。它是 Web 應用程序分析數據的最佳選擇。您可以創(chuàng )建自己的集合以便于集成。
  PHPDebugbar 函數:
  PHPDebugbar 特色:
  10.日食
  當你搜索最好的 PHP 開(kāi)發(fā)工具時(shí),大多數搜索結果都會(huì )在他們的列表中收錄 Eclipse 編輯器,它是一個(gè)完整的開(kāi)發(fā)工具,在頂級 PHP 工具列表中絕對排名靠前。您可以從各種插件中自由選擇,從而更輕松地開(kāi)發(fā)和簡(jiǎn)化您的代碼。還可以幫助定制和擴展IDE以滿(mǎn)足項目的需要。這個(gè) PHP IDE 可以支持 GUI 和非 GUI 應用程序。這個(gè)跨平臺的 PHP 編輯器是大型 PHP 項目的理想選擇。
  日食特點(diǎn):
  日食專(zhuān)長(cháng):
  上面列出的每個(gè)工具都有自己獨特的功能,可以讓開(kāi)發(fā)人員快速輕松地創(chuàng )建 PHP網(wǎng)站 和應用程序,但是這些≈不是市場(chǎng)上唯一的開(kāi)發(fā)工具,您可以找到更多付費或免費的編輯器工具.
  解決方案:SEO(搜索引擎優(yōu)化)重點(diǎn)知識
  電商圈SEO(搜索引擎優(yōu)化)基礎知識基礎課程目錄一、SEO基本概念及模型二、搜索引擎關(guān)鍵詞三、搜索鏈接引擎四、頁(yè)面內部元素優(yōu)化五、關(guān)于百度和GOOGLE一、SEO基本概念和模型1、SEO定義2、搜索引擎(SE)工作model3、搜索引擎優(yōu)化 (SEO) 工作模型1、SEO 定義 SEO=SearchEngineOptimization 搜索引擎優(yōu)化是一種使特定頁(yè)面在搜索結果中獲得有利排名的方法。搜索引擎算法具有高度機密性,任何搜索引擎優(yōu)化都是基于猜測,需要長(cháng)期觀(guān)察、總結、預算和逐步驗證。搜索引擎優(yōu)化必須從查看者的角度考慮,因為搜索引擎算法也是為了滿(mǎn)足搜索者而設計的。 SEO工作模式我解釋??梢钥吹絊EO模型中有網(wǎng)站A和網(wǎng)站B,那么它們是如何輸入我們指定的內容的呢?哦,通過(guò)關(guān)鍵字(我稍后會(huì )談到關(guān)鍵字) 為什么圖像的中心是頁(yè)面而不是 網(wǎng)站?因為給外鏈設置關(guān)鍵詞的目的是讓用戶(hù)進(jìn)入我們希望他進(jìn)入的頁(yè)面,而不是宣傳整個(gè)網(wǎng)站,而外鏈、關(guān)鍵詞和這個(gè)頁(yè)面的內容是相關(guān)的。電子商務(wù)二、搜索引擎關(guān)鍵詞1、搜索引擎關(guān)鍵詞定義2、如何識別關(guān)鍵詞3、關(guān)鍵詞很多人都說(shuō)關(guān)鍵詞,但它們是什么?它是一個(gè)我們發(fā)現很少人理解的關(guān)鍵字,所以我們提出了搜索引擎關(guān)鍵字的概念來(lái)區分頁(yè)面關(guān)鍵字TAG,1、搜索引擎關(guān)鍵字定義: 搜索引擎關(guān)鍵字:搜索者習慣與被使用密不可分搜索引擎識別的漢字組合。
  不同于傳統口語(yǔ)的關(guān)鍵字。它必須在標題中,同時(shí)是頁(yè)面的標題,以及整個(gè)頁(yè)面的主要內容??梢蕴崛?lái)自搜索引擎的相關(guān)搜索。注意第三段必須在標題中,即頁(yè)面的標題,也是整個(gè)頁(yè)面的主要內容。 2、如何識別關(guān)鍵詞:為搜索引擎優(yōu)化識別關(guān)鍵詞的第一步需要一定的語(yǔ)言組織能力和對搜索引擎的理解。確認關(guān)鍵詞的三個(gè)原則:準確性、相關(guān)性和搜索習慣。關(guān)鍵字分詞符號的區別:空格:模糊查詢(xún)“-”、“-”:模糊查詢(xún)分詞和解釋“|”:獨立查詢(xún)絕對分詞“_”:獨立查詢(xún)絕對分詞關(guān)鍵字1關(guān)鍵字2關(guān)鍵字3關(guān)鍵字字1_關(guān)鍵字2_關(guān)鍵詞3,其中下劃線(xiàn)和下劃線(xiàn)也不同,_例如:以陳冠希的消息為例,陳冠希計劃8月回港支持農夫公司,將陳煥仁踢走_港臺明星新聞_娛樂(lè )_騰訊網(wǎng),這是騰訊網(wǎng)的新聞??梢钥吹匠诵侣勵^條之外,網(wǎng)站 列都在 _ 之后。騰訊的目的是對關(guān)鍵詞進(jìn)行細分,突出頭條。關(guān)鍵詞劃分的時(shí)候,要么搜索計劃8月回港支持農民公司踢陳煥仁的陳冠希,要么搜索騰訊。如果我們用空格分隔,陳冠希和Gillian GIGI喜歡在香港拍照,那么我們搜索“陳冠希的GIGI照片”也會(huì )搜索到這個(gè)標題。這就是模糊搜索和拆分關(guān)鍵詞搜索的區別。體現在搜索結果上,大家可以試試,很多上網(wǎng)很久的網(wǎng)友都知道,百度不僅可以搜索吃等詞,還可以搜索川菜,中間加空格的原理兩個(gè)關(guān)鍵字是一樣的,這個(gè)是關(guān)于關(guān)鍵字的處理,基本上keyword->title->h1->頁(yè)面內容基本上就是一個(gè)頁(yè)??面,最好只設計一個(gè)H1,H1是一個(gè)key的一個(gè)頁(yè)面。如果百度的蜘蛛爬過(guò)來(lái),會(huì )先爬標題,然后再往下爬到H1H2H3H4。如果爬到多個(gè)H1,爬蟲(chóng)就傻了,因為它不知道哪個(gè)H1更重要。最好的做法是文章 的標題用 H1 括起來(lái),與標題相同。關(guān)鍵字相關(guān)性低的頁(yè)面鏈接,只能增加鏈接的廣度。
  
  不知道大家是怎么理解它的意思的。如果你想做外部鏈接!那么外鏈的目的地就是中間的關(guān)鍵詞,所以你做的外鏈必須和目標頁(yè)面中的關(guān)鍵詞相同或相似。如果相關(guān)性不高,只能增加鏈接的廣度,不會(huì )增加網(wǎng)站的權重那么網(wǎng)站的權重是多少呢?一般來(lái)說(shuō),搜索引擎都會(huì )給出一個(gè)網(wǎng)站的評價(jià),比如gg的PR值。當然,百度也有明確表示是對網(wǎng)站的評價(jià)。當然,評價(jià)越高,你的網(wǎng)站就越好。如果你的網(wǎng)站@網(wǎng)站高權重蜘蛛比較勤奮。不僅他們一個(gè)人來(lái),還帶了一家老少皆宜1、域名優(yōu)化百度喜歡拼音GOOGLE喜歡英文是一個(gè)網(wǎng)站首先好域名現在看來(lái)百度喜歡.com勝過(guò).cn,所以如果你想做一個(gè)網(wǎng)站,試著(zhù)注冊.com。拼音,因為大部分的自然流量來(lái)自百度,如果一個(gè)域名是拼音,它可能或多或少的流量沒(méi)有內容。 2、URL的優(yōu)化目錄在建站過(guò)程中不超過(guò)三級靜態(tài)內容有關(guān)鍵字存儲目錄不超過(guò)三層,百度可以抓取最深的目錄,GG更適合,但加深收錄 的over層中的一級目錄會(huì )降低權限,或者根本就沒(méi)有 收錄 ,另外,直接在根目錄下創(chuàng )建一個(gè)列目錄確實(shí)有很多好處。例如,該組中的許多人都使用審查程序。我們在最短的時(shí)間內將其更改為偽靜態(tài)結果。在沒(méi)有內容的情況下,我們上傳了3天,收到了。 500多頁(yè)采集了500多頁(yè),太靜態(tài)了!淺目錄!好域名!必不可少! 3、4、優(yōu)化圖片優(yōu)化我已經(jīng)講過(guò)alt的優(yōu)化了。使用模糊或分割取決于您。對于圖片優(yōu)化,很多人在做網(wǎng)站的時(shí)候都會(huì )使用大圖,放在網(wǎng)站最顯眼的位置,但是很多人并沒(méi)有加圖片的ALT屬性,想象一下爬蟲(chóng)搜索引擎來(lái)到你的頁(yè)面,到處都是img,蜘蛛可能是個(gè)書(shū)呆子,他最想看到的是大奶,但是到處都是img,沒(méi)有名字,他看不到,他們是所有的代碼,所以他會(huì )一一過(guò)一遍。不幸的是,他永遠不會(huì )知道圖片中的內容,然后他會(huì )感到無(wú)聊并且不會(huì )再爬行。那么在電商圈,我們用alt給每張圖片改個(gè)名字,例如:
  ,有誰(shuí)知道這是什么圖片??jì)蓚€(gè)都不知道!只知道是圖片,如果我們添加alt呢?
  
  哦哦哦哦~~原來(lái)是木托蘭,蜘蛛看著(zhù)我!蘭蘭!直接上去,然后仔細采集,然后就會(huì )出現在百度的圖片搜索中,這點(diǎn)很重要!記得給你的網(wǎng)站圖片加alt,5、表格優(yōu)化,現在比較流行div+cssth盡量不要嵌套多層,盡量用吧
<p>+css 不過(guò)我還是想說(shuō)說(shuō)表格。建站時(shí)建議不要嵌套太多表。一般不應超過(guò)4層表。要求是三層。最好使用DIV,可能是DVI+CSS。費時(shí)費力,但好處是無(wú)法言喻的,所以有人說(shuō)代碼不簡(jiǎn)潔,CSS很復雜,CSS確實(shí)很復雜,但是蜘蛛不會(huì )看CSS,只會(huì )看在你的內容!對 js 的 css 外部調用也是如此。相對來(lái)說(shuō),DIV+CSS確實(shí)比TABLE好很多。當然,這是在 SEO 方面。 Flash 優(yōu)化搜索引擎無(wú)法抓取嵌入的 html。最好提供 html 版本的幫助。不是為了提高頁(yè)面的美化效果。不要選擇使用FLASH。很多人喜歡在 網(wǎng)站 的主頁(yè)上使用 FLASH 幻燈片。我不知道。你發(fā)現如果列表中的FLASH沒(méi)有消息,那么你的消息可能不是收錄,那么你的消息可能不是收錄,他是看不懂的,就像看圖片沒(méi)有ALT,他是瞎子!原因很簡(jiǎn)單,蜘蛛看不懂!不要使用 js 進(jìn)行導航。導航調用JS很方便,所以不用重建整個(gè)站點(diǎn)就可以改變導航,可惜蜘蛛又傻又幼稚,看不懂,8、代碼優(yōu)化簡(jiǎn)潔和高效。 div + css盡量不要用JS調用8、代碼優(yōu)化,簡(jiǎn)潔高效規范優(yōu)化部分也講完了。先說(shuō)一下百度和GOOGLE的區別。百度就像一個(gè)愛(ài)新厭舊頁(yè)面的年輕人。 GOOGLE 就像一個(gè)古老的古董。他喜歡舊的和被廣泛認可的有價(jià)值的頁(yè)面。 N個(gè)外部鏈接,但是你的關(guān)鍵字搜索結果排名一段時(shí)間后慢慢下降的主要原因,SEO有效,如果你把一個(gè)頁(yè)面作為一個(gè)整體,你會(huì )做百度如果你放一個(gè)

10個(gè)基于java的cms網(wǎng)站內容管理系統實(shí)戰(圖)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 127 次瀏覽 ? 2022-09-19 19:00 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統實(shí)戰(圖)
  10個(gè)基于java的cms網(wǎng)站內容管理系統實(shí)戰---beanlistener-網(wǎng)站的內容管理系統,其中包括外部系統與資源管理系統之間的管理權限劃分;看看這個(gè)網(wǎng)站,里面的問(wèn)題比較詳細,
  那我推薦我們后臺開(kāi)發(fā)用到的技術(shù):
  
  1、git&svn在源代碼管理方面的用到的主要是:git介紹與使用git代碼倉庫:倉庫:一個(gè)倉庫是一種介于已備份和未備份代碼之間的文件組織方式,它的文件組織方式和傳統的文件夾不同,它依賴(lài)于版本管理系統(比如svn).只有在代碼有更改時(shí)才會(huì )把改動(dòng)提交到倉庫中,提交到倉庫的速度會(huì )比本地更快。git將處理提交到倉庫的事件,保證文件的正確性,以確保代碼的有效性。
  與日志一樣,任何不再修改的文件都會(huì )被git刪除。在git中,任何作者(github)上傳的文件都會(huì )成為永久性存儲在倉庫里,否則會(huì )由于內容的增刪而被刪除。在本地和分支同步時(shí)會(huì )用到到git的分支處理方式。
  2、mysql現在互聯(lián)網(wǎng)的發(fā)展,流量的大小決定著(zhù)用戶(hù)的數量和質(zhì)量,那么怎么能達到更好的推廣和更好的去獲取用戶(hù)就是我們需要考慮的問(wèn)題。那么mysql數據庫,php應用框架等mysql優(yōu)化方案是我們去選擇的。建議如果是開(kāi)發(fā)互聯(lián)網(wǎng),需要用到mysql或者其他sql數據庫,在提速方面是推薦使用mysql的,所以要配置一個(gè)mysql客戶(hù)端也可以。例如可以使用我們提供的工具使用阿里云的mysql數據庫,提供在線(xiàn)的管理。
  
  3、ajax模式一種基于web技術(shù)的一種前端技術(shù)。因為我們的網(wǎng)站要去推廣的時(shí)候,不僅僅是去做一些數據的處理了,比如需要去進(jìn)行一些簡(jiǎn)單的一些圖片處理和文本的處理,圖片處理就像excel圖表模板一樣,不同的是只需要發(fā)送和接收給http庫,而簡(jiǎn)單的文本處理,就像excel中的數據統計一樣,只需要發(fā)送給query語(yǔ)句,而已。
  這個(gè)需要小心去搭建一個(gè)自己的ajax的模板。因為ajax的模板編寫(xiě)的話(huà)要注意多個(gè)頁(yè)面的跳轉,多個(gè)頁(yè)面的傳值,甚至要去實(shí)現相同頁(yè)面的圖片上傳等。只要這一點(diǎn)出現問(wèn)題,你網(wǎng)站的推廣就會(huì )成問(wèn)題。
  4、前端js與css引擎做前端的時(shí)候,是要學(xué)習后端的js技術(shù)的,它做這些我們需要知道前端的js語(yǔ)言是如何實(shí)現的,由于前端架構對js的限制,那么前端又是如何實(shí)現這些東西的呢?我們稱(chēng)之為前端js引擎,他是需要靠后端去實(shí)現前端頁(yè)面與服務(wù)器端的交互的,其實(shí)js的代碼是我們中間交互的一個(gè)橋梁,其實(shí)無(wú)非就是那幾行代碼,這些代碼的處理都是需要通過(guò)requirejs處理,在進(jìn)行fetch的處理,相信大家想想就知道怎么回事了。這些也是需要去研究jquery的源碼的。其他。 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統實(shí)戰(圖)
  10個(gè)基于java的cms網(wǎng)站內容管理系統實(shí)戰---beanlistener-網(wǎng)站的內容管理系統,其中包括外部系統與資源管理系統之間的管理權限劃分;看看這個(gè)網(wǎng)站,里面的問(wèn)題比較詳細,
  那我推薦我們后臺開(kāi)發(fā)用到的技術(shù):
  
  1、git&svn在源代碼管理方面的用到的主要是:git介紹與使用git代碼倉庫:倉庫:一個(gè)倉庫是一種介于已備份和未備份代碼之間的文件組織方式,它的文件組織方式和傳統的文件夾不同,它依賴(lài)于版本管理系統(比如svn).只有在代碼有更改時(shí)才會(huì )把改動(dòng)提交到倉庫中,提交到倉庫的速度會(huì )比本地更快。git將處理提交到倉庫的事件,保證文件的正確性,以確保代碼的有效性。
  與日志一樣,任何不再修改的文件都會(huì )被git刪除。在git中,任何作者(github)上傳的文件都會(huì )成為永久性存儲在倉庫里,否則會(huì )由于內容的增刪而被刪除。在本地和分支同步時(shí)會(huì )用到到git的分支處理方式。
  2、mysql現在互聯(lián)網(wǎng)的發(fā)展,流量的大小決定著(zhù)用戶(hù)的數量和質(zhì)量,那么怎么能達到更好的推廣和更好的去獲取用戶(hù)就是我們需要考慮的問(wèn)題。那么mysql數據庫,php應用框架等mysql優(yōu)化方案是我們去選擇的。建議如果是開(kāi)發(fā)互聯(lián)網(wǎng),需要用到mysql或者其他sql數據庫,在提速方面是推薦使用mysql的,所以要配置一個(gè)mysql客戶(hù)端也可以。例如可以使用我們提供的工具使用阿里云的mysql數據庫,提供在線(xiàn)的管理。
  
  3、ajax模式一種基于web技術(shù)的一種前端技術(shù)。因為我們的網(wǎng)站要去推廣的時(shí)候,不僅僅是去做一些數據的處理了,比如需要去進(jìn)行一些簡(jiǎn)單的一些圖片處理和文本的處理,圖片處理就像excel圖表模板一樣,不同的是只需要發(fā)送和接收給http庫,而簡(jiǎn)單的文本處理,就像excel中的數據統計一樣,只需要發(fā)送給query語(yǔ)句,而已。
  這個(gè)需要小心去搭建一個(gè)自己的ajax的模板。因為ajax的模板編寫(xiě)的話(huà)要注意多個(gè)頁(yè)面的跳轉,多個(gè)頁(yè)面的傳值,甚至要去實(shí)現相同頁(yè)面的圖片上傳等。只要這一點(diǎn)出現問(wèn)題,你網(wǎng)站的推廣就會(huì )成問(wèn)題。
  4、前端js與css引擎做前端的時(shí)候,是要學(xué)習后端的js技術(shù)的,它做這些我們需要知道前端的js語(yǔ)言是如何實(shí)現的,由于前端架構對js的限制,那么前端又是如何實(shí)現這些東西的呢?我們稱(chēng)之為前端js引擎,他是需要靠后端去實(shí)現前端頁(yè)面與服務(wù)器端的交互的,其實(shí)js的代碼是我們中間交互的一個(gè)橋梁,其實(shí)無(wú)非就是那幾行代碼,這些代碼的處理都是需要通過(guò)requirejs處理,在進(jìn)行fetch的處理,相信大家想想就知道怎么回事了。這些也是需要去研究jquery的源碼的。其他。

10個(gè)基于java的cms網(wǎng)站內容管理系統,請找出你的答案?

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 83 次瀏覽 ? 2022-09-07 14:02 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統,請找出你的答案?
  10個(gè)基于java的cms網(wǎng)站內容管理系統,請找出你的答案?-架構和組件。感覺(jué)基于weblogic、freedocs的cms網(wǎng)站內容管理系統比較成熟,對產(chǎn)品支持完善。
  
  新生系統做的小一點(diǎn)的沒(méi)什么問(wèn)題,以前我們做的項目的都是簡(jiǎn)單的會(huì )話(huà),視頻播放都要收費的,得幾千塊錢(qián)才能算完成。后續的升級維護什么的就非常困難了?;ヂ?lián)網(wǎng)時(shí)代,不為人服務(wù)就被淘汰,別聽(tīng)人忽悠著(zhù)去做應用軟件,太費錢(qián)了。
  從技術(shù)上來(lái)講現在的智能管理平臺非常成熟了,都是處于廣泛應用過(guò)程中,javaweb開(kāi)發(fā)語(yǔ)言應用在網(wǎng)站上有非常強大的優(yōu)勢,如果開(kāi)發(fā)出一個(gè)saas全套管理系統的話(huà),做出來(lái)的系統,至少能保證上線(xiàn)后是順利的?,F在很多的app公司選擇使用javaweb開(kāi)發(fā)來(lái)支持app.現在javaweb處于比較成熟的階段,現在javaweb開(kāi)發(fā)語(yǔ)言有非常多,選擇一個(gè)好的javaweb開(kāi)發(fā)語(yǔ)言是對于系統質(zhì)量非常重要的,比如對于開(kāi)發(fā)人員來(lái)說(shuō),好的語(yǔ)言需要能夠支持無(wú)縫對接業(yè)務(wù)需求以及一些基礎性業(yè)務(wù)功能,還有的就是簡(jiǎn)單易用、功能豐富等,都是每個(gè)創(chuàng )業(yè)者在選擇的時(shí)候需要考慮的一些因素。
  
  從管理人員角度來(lái)說(shuō),有一些公司做網(wǎng)站,不僅僅只是開(kāi)發(fā)出一個(gè)網(wǎng)站,能在網(wǎng)站上進(jìn)行編輯、登錄、注冊、查詢(xún)、群發(fā)信息等,這些也是作為一個(gè)管理人員需要考慮的問(wèn)題。像一些大公司的一些核心信息,在網(wǎng)站上做不了就直接在移動(dòng)端進(jìn)行登錄吧,這樣也不耽誤管理員工作,而對于個(gè)人網(wǎng)站來(lái)說(shuō),同樣使用javaweb開(kāi)發(fā)的話(huà),就能更輕松的進(jìn)行建站,不再需要過(guò)多的編程,即使沒(méi)有java基礎也沒(méi)有任何關(guān)系,有一些功能就是通過(guò)html編程語(yǔ)言實(shí)現的,這樣建設出來(lái)的網(wǎng)站也基本可以滿(mǎn)足的要求。
  在大量it設備日益發(fā)達的今天,未來(lái)javaweb開(kāi)發(fā)師將會(huì )是越來(lái)越多的程序員和企業(yè)端的開(kāi)發(fā)者希望的,如果喜歡就大膽發(fā)揮你的想象力吧!如果喜歡的話(huà)可以加我微信:,微信公眾號:pal。 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統,請找出你的答案?
  10個(gè)基于java的cms網(wǎng)站內容管理系統,請找出你的答案?-架構和組件。感覺(jué)基于weblogic、freedocs的cms網(wǎng)站內容管理系統比較成熟,對產(chǎn)品支持完善。
  
  新生系統做的小一點(diǎn)的沒(méi)什么問(wèn)題,以前我們做的項目的都是簡(jiǎn)單的會(huì )話(huà),視頻播放都要收費的,得幾千塊錢(qián)才能算完成。后續的升級維護什么的就非常困難了?;ヂ?lián)網(wǎng)時(shí)代,不為人服務(wù)就被淘汰,別聽(tīng)人忽悠著(zhù)去做應用軟件,太費錢(qián)了。
  從技術(shù)上來(lái)講現在的智能管理平臺非常成熟了,都是處于廣泛應用過(guò)程中,javaweb開(kāi)發(fā)語(yǔ)言應用在網(wǎng)站上有非常強大的優(yōu)勢,如果開(kāi)發(fā)出一個(gè)saas全套管理系統的話(huà),做出來(lái)的系統,至少能保證上線(xiàn)后是順利的?,F在很多的app公司選擇使用javaweb開(kāi)發(fā)來(lái)支持app.現在javaweb處于比較成熟的階段,現在javaweb開(kāi)發(fā)語(yǔ)言有非常多,選擇一個(gè)好的javaweb開(kāi)發(fā)語(yǔ)言是對于系統質(zhì)量非常重要的,比如對于開(kāi)發(fā)人員來(lái)說(shuō),好的語(yǔ)言需要能夠支持無(wú)縫對接業(yè)務(wù)需求以及一些基礎性業(yè)務(wù)功能,還有的就是簡(jiǎn)單易用、功能豐富等,都是每個(gè)創(chuàng )業(yè)者在選擇的時(shí)候需要考慮的一些因素。
  
  從管理人員角度來(lái)說(shuō),有一些公司做網(wǎng)站,不僅僅只是開(kāi)發(fā)出一個(gè)網(wǎng)站,能在網(wǎng)站上進(jìn)行編輯、登錄、注冊、查詢(xún)、群發(fā)信息等,這些也是作為一個(gè)管理人員需要考慮的問(wèn)題。像一些大公司的一些核心信息,在網(wǎng)站上做不了就直接在移動(dòng)端進(jìn)行登錄吧,這樣也不耽誤管理員工作,而對于個(gè)人網(wǎng)站來(lái)說(shuō),同樣使用javaweb開(kāi)發(fā)的話(huà),就能更輕松的進(jìn)行建站,不再需要過(guò)多的編程,即使沒(méi)有java基礎也沒(méi)有任何關(guān)系,有一些功能就是通過(guò)html編程語(yǔ)言實(shí)現的,這樣建設出來(lái)的網(wǎng)站也基本可以滿(mǎn)足的要求。
  在大量it設備日益發(fā)達的今天,未來(lái)javaweb開(kāi)發(fā)師將會(huì )是越來(lái)越多的程序員和企業(yè)端的開(kāi)發(fā)者希望的,如果喜歡就大膽發(fā)揮你的想象力吧!如果喜歡的話(huà)可以加我微信:,微信公眾號:pal。

手工檢測Web應用指紋的一些技巧

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 144 次瀏覽 ? 2022-09-05 10:10 ? 來(lái)自相關(guān)話(huà)題

  手工檢測Web應用指紋的一些技巧
  * 本文作者:m00n1ight,本文屬FreeBuf原創(chuàng )獎勵計劃,未經(jīng)許可禁止轉載
  0x01 Web 應用技術(shù)概覽1.1 架構
  大多數 web 應用可以粗略劃分為三個(gè)組件(component)。
  1、客戶(hù)端, 大多數情況下是瀏覽器。
  2、服務(wù)端, Web 服務(wù)器接收客戶(hù)端的HTTP請求并進(jìn)行響應。另外,有時(shí)候 Web服務(wù)器只轉發(fā)請求到應用服務(wù)器(Application Server),由應用服務(wù)器來(lái)處理請求。
  3、后端存儲, 后端存儲一般是DBMS,用于查詢(xún)和存儲數據。
  所有組件都有不同行為,這些不同行為將影響漏洞的存在性和可利用性。所有組件(無(wú)論是客戶(hù)端還是服務(wù)端)都有可能產(chǎn)生漏洞或者其他安全問(wèn)題。
  1.2 客戶(hù)端技術(shù)
  主流的客戶(hù)端技術(shù)每天都在被大量互聯(lián)網(wǎng)用戶(hù)使用,包括 HTML, JavaScript, Flash … 他們常用的瀏覽器則是 Chrome, Firefox, Opera, IE/Edge, Safari 等。另外,包括Android應用的 webview 以及部分PC客戶(hù)端應用(比如QQ或者某些游戲登陸器),也會(huì )引入一部分 web 客戶(hù)端技術(shù)。
  1.3 服務(wù)端技術(shù)
  在服務(wù)端,盡管使用任何技術(shù)的任何Web應用都有或多或少的潛在漏洞,但對于某些特定技術(shù)(如PHP, Struts2等)的網(wǎng)站,則相對更容易產(chǎn)生漏洞。簡(jiǎn)單劃分的話(huà)服務(wù)端技術(shù)大概有以下幾類(lèi)。
  1、Web服務(wù)器(Web Server), 包括 Apache, lighttpd, Nginx, IIS.
  2、應用服務(wù)器(Application Server), 包括 Tomcat, Jboss, Oracle Application server .
  3、編程語(yǔ)言, 包括 PHP, Java, Ruby, Python, C#. 對于后三種語(yǔ)言,一些常見(jiàn)的框架包括 Ruby-on-Rails, .Net MVC, Django 等。
  1.4 后端存儲技術(shù)
  對于大多數中小型網(wǎng)站,數據庫和Web服務(wù)器是在同一臺主機的。常見(jiàn)的后端存儲技術(shù)包括:
  1、關(guān)系型數據庫, 包括 MySQL, Oracle, DB2, SQL Server, PostgreSQL, SQLite 等。
  2、NoSQL, 包括 MongoDB, CouchDB, Redis 等。
  3、目錄訪(fǎng)問(wèn), 包括 openLDAP, Active Directory。
  0x02 Web 服務(wù)器指紋分析2.1 Web 服務(wù)器指紋內容
  我們想要尋找哪些信息。
  1、Web服務(wù)器名稱(chēng),版本
  2、Web服務(wù)器后端是否有應用服務(wù)器
  3、數據庫(DBMS)是否部署在同一主機(host),數據庫類(lèi)型
  4、是否使用反向代理(reverse proxy)
  5、是否使用負載均衡(load balancing)
  6、Web應用使用的編程語(yǔ)言
  2.2 手工檢測技巧2.2.1 HTTP分析
  使用chrome開(kāi)發(fā)者工具或者burpsuite交互式抓包分析HTTP數據。
  1、重點(diǎn)觀(guān)察 響應頭(Response Header)的 Server, X-Powered-By, Set-Cookie 字段。
  2、使用畸形 Host字段的 HTTP請求試探,觀(guān)察響應頭。
  比如 Struts2 的特征之一就是會(huì )設置特殊的JSESSIONID的cookie字段。
  Set-Cookie: JSESSIONID=C09CBBF************7CF6D25D4F0
  又或者以freebuf為例,你可以觀(guān)察到兩個(gè)有趣的字段,Server字段以及WP-Super-Cache。
  Server字段說(shuō)明 freebuf 的服務(wù)器版本是 Apache 2.2.21
  WP-Super-Cache 字段則表明 freebuf 使用名為 WP Super Cache 的 Wordpress 插件。
  2.2.2 瀏覽網(wǎng)站2.2.2.1 關(guān)注HTML源碼
  
  重點(diǎn)關(guān)注以下幾處
  1、上傳與下載功能
  2、認證表單與URL(login,logout, reset password)
  3、后臺管理頁(yè)面(administration section)
  4、數據輸入點(diǎn),例如”留言板,聯(lián)系我們,個(gè)人資料,商品評論,搜索,編輯器”等
  觀(guān)察這些位置的HTML源碼(特殊的class名稱(chēng))及其注釋(comment)部分,可能暴露有價(jià)值信息。
  2.2.2.2 根據網(wǎng)站頁(yè)面后綴判斷
  通常而言
  1、存在.php結尾的文件說(shuō)明該web應用是用PHP寫(xiě)的。
  2、存在.jsp或者.do的文件,說(shuō)明該web應用是由Java寫(xiě)的。
  3、存在.asp或者.aspx結尾的文件,說(shuō)明該web應用可能是由VB或者C#寫(xiě)的。
  需要注意的是(低概率事件),某些腦洞奇特的管理員/開(kāi)發(fā)者/運維可能會(huì )將Java編寫(xiě)的程序用.php的結尾,或者讓某些PHP應用使用.do結尾。
  如果網(wǎng)站路徑存在 RESTful URL 的特征,例如
  /objects/ # will give you a list of all the objects;
/objects/new # will give you the page to create a new object;
/objects/12 # will give you the object with the id 12;
/objects/12/edit # will give you the page to modify the object with the id 12;
  則很有可能是由 Ruby On Rails 或者 Python 開(kāi)發(fā)的。
  2.2.2.3 favicon.ico
  可以通過(guò)默認 favicon.ico 來(lái)判斷CMS,比如 Drupal 的默認icon是一個(gè)水滴狀的物體。在HTML源碼處搜索關(guān)鍵詞icon或者shortcut。
  幾個(gè)例子
  2.2.2.4 robots.txt
  有些cms會(huì )有默認robots.txt,所以我們可以通過(guò)robots.txt來(lái)幫助判斷CMS。下面的是舉了一個(gè)Joomla的robots.txt例子。由于robots.txt只是君子協(xié)議,所以你懂的,在滲透測試時(shí)它完全在說(shuō)明你應該檢查哪些目錄。
  # If the Joomla site is installed within a folder
# eg www.example.com/joomla/ then the robots.txt file
# MUST be moved to the site root
# eg www.example.com/robots.txt
# AND the joomla folder name MUST be prefixed to all of the
# paths.
# eg the Disallow rule for the /administrator/ folder MUST
# be changed to read
# Disallow: /joomla/administrator/
#
# For more information about the robots.txt standard, see:
# http://www.robotstxt.org/orig.html
<p>
#
# For syntax checking, see:
# http://tool.motoricerca.info/robots-checker.phtml
User-agent: *
Disallow: /administrator/
Disallow: /bin/
Disallow: /cache/
Disallow: /cli/
Disallow: /components/
Disallow: /includes/
Disallow: /installation/
Disallow: /language/
Disallow: /layouts/
Disallow: /libraries/
Disallow: /logs/
Disallow: /modules/
Disallow: /plugins/
Disallow: /tmp/</p>
  2.2.2.5 目錄掃描(directory/pages busting)
  可以使用wfuzz進(jìn)行目錄掃描。
  python wfuzz.py -w wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ
  詳細的使用方法請參考
  另外也可以參考 OWASP的目錄掃描工具 OpenDoor,開(kāi)發(fā)比較活躍。
  :///stanislav-web/OpenDoor/wiki
  無(wú)論用什么具體的目錄掃描工具,最終是為了發(fā)現某些404頁(yè)面, SQL錯誤頁(yè)面或者其他異常頁(yè)面,這些頁(yè)面暴露的信息可能可以反映服務(wù)器類(lèi)型與版本。除此以外,對于多數網(wǎng)站的后臺管理頁(yè)面通常都屬于某些常用的路徑(即包含在字典中),因此我們在大多數情況可以通過(guò)目錄掃描來(lái)獲得。如果已知CMS類(lèi)型,可以直接參考文檔來(lái)判斷后臺默認管理頁(yè)面的路徑。
  2.2.2.6 刻意構造錯誤
  錯誤頁(yè)面可以給你提供關(guān)于服務(wù)器的大量信息??梢酝ㄟ^(guò)構造含有隨機字符串的URL,并訪(fǎng)問(wèn)它來(lái)嘗試得到404頁(yè)面。
  Tomcat的默認404頁(yè)面
  Ruby on Rails的默認404頁(yè)面
  還有幾種方法可以構造錯誤。比如在URL中添加特殊字符(NULL),%27(Single Quote),%22(Double Quote)?;蛘咴赨RL中刪除部分參數,刪除部分cookie中的參數(chrome 插件 edit this cookie)。
  不熟練的Django開(kāi)發(fā)者可能會(huì )開(kāi)啟調試模式
  Tomcat 5XX的錯誤時(shí)可能拋出異常會(huì )顯示調用棧
  對于PHP的應用,還有一個(gè)很常用的技巧來(lái)構造錯誤。比如將/index.php?name=hacker替代為/index.php?name[]=hacker。
  關(guān)鍵是要仔細閱讀這些錯誤信息。雖然這聽(tīng)起來(lái)有點(diǎn)蠢,但是你肯定會(huì )驚訝于會(huì )有多少開(kāi)發(fā)者認為兩個(gè)錯誤頁(yè)面是一樣的,即使是錯誤消息的內容完全不同。The evil is in the detail.
  0x03 Web應用指紋特征總結3.1 HTTP響應頭(HTTP response header) 特征 查看全部

  手工檢測Web應用指紋的一些技巧
  * 本文作者:m00n1ight,本文屬FreeBuf原創(chuàng )獎勵計劃,未經(jīng)許可禁止轉載
  0x01 Web 應用技術(shù)概覽1.1 架構
  大多數 web 應用可以粗略劃分為三個(gè)組件(component)。
  1、客戶(hù)端, 大多數情況下是瀏覽器。
  2、服務(wù)端, Web 服務(wù)器接收客戶(hù)端的HTTP請求并進(jìn)行響應。另外,有時(shí)候 Web服務(wù)器只轉發(fā)請求到應用服務(wù)器(Application Server),由應用服務(wù)器來(lái)處理請求。
  3、后端存儲, 后端存儲一般是DBMS,用于查詢(xún)和存儲數據。
  所有組件都有不同行為,這些不同行為將影響漏洞的存在性和可利用性。所有組件(無(wú)論是客戶(hù)端還是服務(wù)端)都有可能產(chǎn)生漏洞或者其他安全問(wèn)題。
  1.2 客戶(hù)端技術(shù)
  主流的客戶(hù)端技術(shù)每天都在被大量互聯(lián)網(wǎng)用戶(hù)使用,包括 HTML, JavaScript, Flash … 他們常用的瀏覽器則是 Chrome, Firefox, Opera, IE/Edge, Safari 等。另外,包括Android應用的 webview 以及部分PC客戶(hù)端應用(比如QQ或者某些游戲登陸器),也會(huì )引入一部分 web 客戶(hù)端技術(shù)。
  1.3 服務(wù)端技術(shù)
  在服務(wù)端,盡管使用任何技術(shù)的任何Web應用都有或多或少的潛在漏洞,但對于某些特定技術(shù)(如PHP, Struts2等)的網(wǎng)站,則相對更容易產(chǎn)生漏洞。簡(jiǎn)單劃分的話(huà)服務(wù)端技術(shù)大概有以下幾類(lèi)。
  1、Web服務(wù)器(Web Server), 包括 Apache, lighttpd, Nginx, IIS.
  2、應用服務(wù)器(Application Server), 包括 Tomcat, Jboss, Oracle Application server .
  3、編程語(yǔ)言, 包括 PHP, Java, Ruby, Python, C#. 對于后三種語(yǔ)言,一些常見(jiàn)的框架包括 Ruby-on-Rails, .Net MVC, Django 等。
  1.4 后端存儲技術(shù)
  對于大多數中小型網(wǎng)站,數據庫和Web服務(wù)器是在同一臺主機的。常見(jiàn)的后端存儲技術(shù)包括:
  1、關(guān)系型數據庫, 包括 MySQL, Oracle, DB2, SQL Server, PostgreSQL, SQLite 等。
  2、NoSQL, 包括 MongoDB, CouchDB, Redis 等。
  3、目錄訪(fǎng)問(wèn), 包括 openLDAP, Active Directory。
  0x02 Web 服務(wù)器指紋分析2.1 Web 服務(wù)器指紋內容
  我們想要尋找哪些信息。
  1、Web服務(wù)器名稱(chēng),版本
  2、Web服務(wù)器后端是否有應用服務(wù)器
  3、數據庫(DBMS)是否部署在同一主機(host),數據庫類(lèi)型
  4、是否使用反向代理(reverse proxy)
  5、是否使用負載均衡(load balancing)
  6、Web應用使用的編程語(yǔ)言
  2.2 手工檢測技巧2.2.1 HTTP分析
  使用chrome開(kāi)發(fā)者工具或者burpsuite交互式抓包分析HTTP數據。
  1、重點(diǎn)觀(guān)察 響應頭(Response Header)的 Server, X-Powered-By, Set-Cookie 字段。
  2、使用畸形 Host字段的 HTTP請求試探,觀(guān)察響應頭。
  比如 Struts2 的特征之一就是會(huì )設置特殊的JSESSIONID的cookie字段。
  Set-Cookie: JSESSIONID=C09CBBF************7CF6D25D4F0
  又或者以freebuf為例,你可以觀(guān)察到兩個(gè)有趣的字段,Server字段以及WP-Super-Cache。
  Server字段說(shuō)明 freebuf 的服務(wù)器版本是 Apache 2.2.21
  WP-Super-Cache 字段則表明 freebuf 使用名為 WP Super Cache 的 Wordpress 插件。
  2.2.2 瀏覽網(wǎng)站2.2.2.1 關(guān)注HTML源碼
  
  重點(diǎn)關(guān)注以下幾處
  1、上傳與下載功能
  2、認證表單與URL(login,logout, reset password)
  3、后臺管理頁(yè)面(administration section)
  4、數據輸入點(diǎn),例如”留言板,聯(lián)系我們,個(gè)人資料,商品評論,搜索,編輯器”等
  觀(guān)察這些位置的HTML源碼(特殊的class名稱(chēng))及其注釋(comment)部分,可能暴露有價(jià)值信息。
  2.2.2.2 根據網(wǎng)站頁(yè)面后綴判斷
  通常而言
  1、存在.php結尾的文件說(shuō)明該web應用是用PHP寫(xiě)的。
  2、存在.jsp或者.do的文件,說(shuō)明該web應用是由Java寫(xiě)的。
  3、存在.asp或者.aspx結尾的文件,說(shuō)明該web應用可能是由VB或者C#寫(xiě)的。
  需要注意的是(低概率事件),某些腦洞奇特的管理員/開(kāi)發(fā)者/運維可能會(huì )將Java編寫(xiě)的程序用.php的結尾,或者讓某些PHP應用使用.do結尾。
  如果網(wǎng)站路徑存在 RESTful URL 的特征,例如
  /objects/ # will give you a list of all the objects;
/objects/new # will give you the page to create a new object;
/objects/12 # will give you the object with the id 12;
/objects/12/edit # will give you the page to modify the object with the id 12;
  則很有可能是由 Ruby On Rails 或者 Python 開(kāi)發(fā)的。
  2.2.2.3 favicon.ico
  可以通過(guò)默認 favicon.ico 來(lái)判斷CMS,比如 Drupal 的默認icon是一個(gè)水滴狀的物體。在HTML源碼處搜索關(guān)鍵詞icon或者shortcut。
  幾個(gè)例子
  2.2.2.4 robots.txt
  有些cms會(huì )有默認robots.txt,所以我們可以通過(guò)robots.txt來(lái)幫助判斷CMS。下面的是舉了一個(gè)Joomla的robots.txt例子。由于robots.txt只是君子協(xié)議,所以你懂的,在滲透測試時(shí)它完全在說(shuō)明你應該檢查哪些目錄。
  # If the Joomla site is installed within a folder
# eg www.example.com/joomla/ then the robots.txt file
# MUST be moved to the site root
# eg www.example.com/robots.txt
# AND the joomla folder name MUST be prefixed to all of the
# paths.
# eg the Disallow rule for the /administrator/ folder MUST
# be changed to read
# Disallow: /joomla/administrator/
#
# For more information about the robots.txt standard, see:
# http://www.robotstxt.org/orig.html
<p>
#
# For syntax checking, see:
# http://tool.motoricerca.info/robots-checker.phtml
User-agent: *
Disallow: /administrator/
Disallow: /bin/
Disallow: /cache/
Disallow: /cli/
Disallow: /components/
Disallow: /includes/
Disallow: /installation/
Disallow: /language/
Disallow: /layouts/
Disallow: /libraries/
Disallow: /logs/
Disallow: /modules/
Disallow: /plugins/
Disallow: /tmp/</p>
  2.2.2.5 目錄掃描(directory/pages busting)
  可以使用wfuzz進(jìn)行目錄掃描。
  python wfuzz.py -w wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ
  詳細的使用方法請參考
  另外也可以參考 OWASP的目錄掃描工具 OpenDoor,開(kāi)發(fā)比較活躍。
  :///stanislav-web/OpenDoor/wiki
  無(wú)論用什么具體的目錄掃描工具,最終是為了發(fā)現某些404頁(yè)面, SQL錯誤頁(yè)面或者其他異常頁(yè)面,這些頁(yè)面暴露的信息可能可以反映服務(wù)器類(lèi)型與版本。除此以外,對于多數網(wǎng)站的后臺管理頁(yè)面通常都屬于某些常用的路徑(即包含在字典中),因此我們在大多數情況可以通過(guò)目錄掃描來(lái)獲得。如果已知CMS類(lèi)型,可以直接參考文檔來(lái)判斷后臺默認管理頁(yè)面的路徑。
  2.2.2.6 刻意構造錯誤
  錯誤頁(yè)面可以給你提供關(guān)于服務(wù)器的大量信息??梢酝ㄟ^(guò)構造含有隨機字符串的URL,并訪(fǎng)問(wèn)它來(lái)嘗試得到404頁(yè)面。
  Tomcat的默認404頁(yè)面
  Ruby on Rails的默認404頁(yè)面
  還有幾種方法可以構造錯誤。比如在URL中添加特殊字符(NULL),%27(Single Quote),%22(Double Quote)?;蛘咴赨RL中刪除部分參數,刪除部分cookie中的參數(chrome 插件 edit this cookie)。
  不熟練的Django開(kāi)發(fā)者可能會(huì )開(kāi)啟調試模式
  Tomcat 5XX的錯誤時(shí)可能拋出異常會(huì )顯示調用棧
  對于PHP的應用,還有一個(gè)很常用的技巧來(lái)構造錯誤。比如將/index.php?name=hacker替代為/index.php?name[]=hacker。
  關(guān)鍵是要仔細閱讀這些錯誤信息。雖然這聽(tīng)起來(lái)有點(diǎn)蠢,但是你肯定會(huì )驚訝于會(huì )有多少開(kāi)發(fā)者認為兩個(gè)錯誤頁(yè)面是一樣的,即使是錯誤消息的內容完全不同。The evil is in the detail.
  0x03 Web應用指紋特征總結3.1 HTTP響應頭(HTTP response header) 特征

10個(gè)基于java的cms網(wǎng)站內容管理系統開(kāi)發(fā)教程分享

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 144 次瀏覽 ? 2022-08-16 06:01 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統開(kāi)發(fā)教程分享
  10個(gè)基于java的cms網(wǎng)站內容管理系統開(kāi)發(fā)教程分享,適合大型cms內容管理系統開(kāi)發(fā),其他cms的開(kāi)發(fā),也可以給大家推薦,謝謝!cms客戶(hù)端軟件開(kāi)發(fā)教程也很多,這里有這個(gè)javacms程序開(kāi)發(fā)教程,是一些國內技術(shù)較好的cms程序員給你們開(kāi)發(fā)的一些系統教程,供大家參考。
  教程你可以看下這個(gè)國內的云掌柜cms博客企業(yè)建站源碼分享系統開(kāi)發(fā)教程我是做cms開(kāi)發(fā)的我這個(gè)教程挺適合你的可以參考下
  
  推薦一個(gè)javacms內容管理系統開(kāi)發(fā)教程,這是有一個(gè)團隊開(kāi)發(fā)的,
  這個(gè)本身是用java編寫(xiě)的,需要java基礎,在校學(xué)生可以考慮,零基礎也是可以學(xué)習的,他們提供java學(xué)習資料,和在線(xiàn)源碼,希望對你有幫助,
  推薦這個(gè)java技術(shù)學(xué)習java企業(yè)內部工具集thejavaquicktutorial
  
  整理了一下,給大家分享一些以java作為前端技術(shù)實(shí)現的cms,感覺(jué)很好用,覺(jué)得有用的可以看看,說(shuō)不定對你有幫助,下面是整理的前端java學(xué)習路線(xiàn),按照這個(gè)學(xué)習就可以了java簡(jiǎn)單快速的開(kāi)發(fā)企業(yè)常用的cms需要了解sql的關(guān)系數據庫一般通用的數據庫,i2c,redis、mysql,一般看apache官方文檔,了解一下mvc整合其他部分學(xué)習其他。
  asp模板之龍船cms
  百格活力
  還有百格活力,里面有整理的一套javacms開(kāi)發(fā)教程。我有這個(gè)javacms開(kāi)發(fā)教程,需要的話(huà)可以留言qaq,需要的話(huà)。 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統開(kāi)發(fā)教程分享
  10個(gè)基于java的cms網(wǎng)站內容管理系統開(kāi)發(fā)教程分享,適合大型cms內容管理系統開(kāi)發(fā),其他cms的開(kāi)發(fā),也可以給大家推薦,謝謝!cms客戶(hù)端軟件開(kāi)發(fā)教程也很多,這里有這個(gè)javacms程序開(kāi)發(fā)教程,是一些國內技術(shù)較好的cms程序員給你們開(kāi)發(fā)的一些系統教程,供大家參考。
  教程你可以看下這個(gè)國內的云掌柜cms博客企業(yè)建站源碼分享系統開(kāi)發(fā)教程我是做cms開(kāi)發(fā)的我這個(gè)教程挺適合你的可以參考下
  
  推薦一個(gè)javacms內容管理系統開(kāi)發(fā)教程,這是有一個(gè)團隊開(kāi)發(fā)的,
  這個(gè)本身是用java編寫(xiě)的,需要java基礎,在校學(xué)生可以考慮,零基礎也是可以學(xué)習的,他們提供java學(xué)習資料,和在線(xiàn)源碼,希望對你有幫助,
  推薦這個(gè)java技術(shù)學(xué)習java企業(yè)內部工具集thejavaquicktutorial
  
  整理了一下,給大家分享一些以java作為前端技術(shù)實(shí)現的cms,感覺(jué)很好用,覺(jué)得有用的可以看看,說(shuō)不定對你有幫助,下面是整理的前端java學(xué)習路線(xiàn),按照這個(gè)學(xué)習就可以了java簡(jiǎn)單快速的開(kāi)發(fā)企業(yè)常用的cms需要了解sql的關(guān)系數據庫一般通用的數據庫,i2c,redis、mysql,一般看apache官方文檔,了解一下mvc整合其他部分學(xué)習其他。
  asp模板之龍船cms
  百格活力
  還有百格活力,里面有整理的一套javacms開(kāi)發(fā)教程。我有這個(gè)javacms開(kāi)發(fā)教程,需要的話(huà)可以留言qaq,需要的話(huà)。

10個(gè)基于java的cms網(wǎng)站內容管理系統十大系統對比

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 128 次瀏覽 ? 2022-07-20 19:05 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統十大系統對比
  10個(gè)基于java的cms網(wǎng)站內容管理系統十大系統對比,你了解多少?獲取免費學(xué)習資料,請移步微信公眾號【大前端小班長(cháng)】,
  
  后臺有web后臺功能的,其實(shí)都需要用java實(shí)現吧。好像是有單獨的php后臺,用java作為主程序設計的。
  java也分很多層級,不同層級用的框架都不一樣。舉例:spring是springboot的一個(gè)框架。spring分前后端,用到的spring框架也不一樣,先說(shuō)spring后端,因為spring后端需要利用到ioc容器。(這個(gè)可以參考犀牛書(shū),寫(xiě)的就比較好)我見(jiàn)過(guò)的php寫(xiě)的后端是這樣的。這是二手貨,二手貨用的是springboot而已。既然選擇了spring,就不要再隨便用java了,其實(shí)spring本身也可以滿(mǎn)足你的需求的。
  
  系統有三個(gè)層級,web,前端,后端,看你需要什么,你可以選擇從web層開(kāi)始學(xué)習,這一塊java我推薦紅寶書(shū),而且至少要看兩遍以上,然后隨著(zhù)你的進(jìn)步,可以根據情況,學(xué)習下后端,熟悉框架是基礎,學(xué)習你不感興趣的,例如mybatis等等,這個(gè)看個(gè)人愛(ài)好,另外不要一上來(lái)就學(xué)大數據云平臺相關(guān)的技術(shù),容易害死你。
  java好啊,有官方文檔, 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統十大系統對比
  10個(gè)基于java的cms網(wǎng)站內容管理系統十大系統對比,你了解多少?獲取免費學(xué)習資料,請移步微信公眾號【大前端小班長(cháng)】,
  
  后臺有web后臺功能的,其實(shí)都需要用java實(shí)現吧。好像是有單獨的php后臺,用java作為主程序設計的。
  java也分很多層級,不同層級用的框架都不一樣。舉例:spring是springboot的一個(gè)框架。spring分前后端,用到的spring框架也不一樣,先說(shuō)spring后端,因為spring后端需要利用到ioc容器。(這個(gè)可以參考犀牛書(shū),寫(xiě)的就比較好)我見(jiàn)過(guò)的php寫(xiě)的后端是這樣的。這是二手貨,二手貨用的是springboot而已。既然選擇了spring,就不要再隨便用java了,其實(shí)spring本身也可以滿(mǎn)足你的需求的。
  
  系統有三個(gè)層級,web,前端,后端,看你需要什么,你可以選擇從web層開(kāi)始學(xué)習,這一塊java我推薦紅寶書(shū),而且至少要看兩遍以上,然后隨著(zhù)你的進(jìn)步,可以根據情況,學(xué)習下后端,熟悉框架是基礎,學(xué)習你不感興趣的,例如mybatis等等,這個(gè)看個(gè)人愛(ài)好,另外不要一上來(lái)就學(xué)大數據云平臺相關(guān)的技術(shù),容易害死你。
  java好啊,有官方文檔,

2020年,我們該如何學(xué)習 WEB 前端開(kāi)發(fā)?

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 119 次瀏覽 ? 2022-07-18 05:57 ? 來(lái)自相關(guān)話(huà)題

  2020年,我們該如何學(xué)習 WEB 前端開(kāi)發(fā)?
  每當想要開(kāi)始學(xué)習,腦子里總會(huì )跳出一系列問(wèn)題:WEB前端的學(xué)習先后順序是什么?PC端必須要掌握哪些知識和框架?移動(dòng)端要掌握哪些知識和框架?TypeScript和node.js是否為可學(xué)可不學(xué)?新手應該按照什么先后次第學(xué)習呢?本文是阿里巴巴淘系技術(shù)部高級前端工程師——小問(wèn)的個(gè)人經(jīng)驗總結,希望幫到處于迷茫期的你!
  我們可以把學(xué)習路線(xiàn)比作游戲中的段位上分,在不同的分段都有自己的定位和要鍛煉的事情:
  青銅—從零開(kāi)始小學(xué)生:懷著(zhù)滿(mǎn)腔的熱血,看到了這一個(gè)行業(yè)的希望和未來(lái),準備開(kāi)始學(xué)習 Web 開(kāi)發(fā)知識。
  白銀 —懵懵懂懂初學(xué)者:懂得如何使用 HTML、CSS 和 JavaScript 三大件來(lái)實(shí)現基本頁(yè)面開(kāi)發(fā)功能
  黃金—輕車(chē)熟路新玩家:懂得使用框架來(lái)實(shí)現上面所舉例項目
  鉑金 V—初出茅廬新司機: 懂得如何使用腳手架創(chuàng )建項目,并且能將代碼結構根據模塊化的思想進(jìn)行安排
  鉑金 I—基本上手好司機:如果是懂得如何利用 Node.js 或 TypeScript 編寫(xiě)業(yè)務(wù)代碼的
  鉆石 V—淡定自然老司機:如果是對邏輯抽象、模塊封裝有了一定的理解和經(jīng)驗的
  鉆石 I—賽道新手初學(xué)者:如果上面的條件你都已經(jīng)滿(mǎn)足了
  到這里我劃了一條從 0 到高級前端工程師級別的純技術(shù)路線(xiàn)。相信有不少有經(jīng)驗的同學(xué)會(huì )發(fā)現中間我省略了不少內容,但也不難發(fā)現路線(xiàn)中從前半段的“學(xué)習”逐步變成后半段的“思考”。優(yōu)秀的工程師除了需要有在純技術(shù)領(lǐng)域的沉淀以外,還需要更多對技術(shù)、團隊、ROI(投資回報率)的思考,當然這依然不足以支撐我們平穩地渡過(guò)“程序員 35 歲危機”,前面的路還有很長(cháng),鉆石往上還有王者呢,誰(shuí)說(shuō)程序員就是青春飯碗的?
  回想起很多年前我也跟你一樣是一個(gè)完全的新手,從 0 開(kāi)始慢慢自學(xué)摸索 Web 開(kāi)發(fā),甚至后來(lái)我也沒(méi)有進(jìn)入科班學(xué)習計算機,那么來(lái)聽(tīng)聽(tīng)我作為一個(gè)“前人”是如何完全靠自學(xué)至今的故事吧。
  我的從 0 開(kāi)始
  我是一個(gè)完全從自學(xué)開(kāi)始的前端工程師,想起來(lái)第一次接觸前端就是初中那會(huì )特別流行合租 VPS 然后注冊一個(gè) .tk 的免費域名。而作為一個(gè)剛入門(mén) Web 開(kāi)發(fā)不久的小屁孩來(lái)說(shuō),用這種方式一探“大人的世界”屬實(shí)讓人興奮。而當時(shí)最流行的博客管理軟件就是用 PHP 寫(xiě)的 WordPress,作為一個(gè)十分成熟的 CMS 軟件來(lái)說(shuō) WordPress 當時(shí)就有了非常豐富的社區資源,比如主題、模板、插件等等。
  而作為一個(gè)十分注重個(gè)性化的小屁孩來(lái)說(shuō),當然是要自己做一個(gè)主題的??!于是我就從此踏上了 Web 開(kāi)發(fā)的不歸路,在此之前我所接觸的都是 Visual Basic 這樣的 Native 的語(yǔ)言。
  以 WordPress 主題作為切入點(diǎn),我開(kāi)始學(xué)習 PHP 用于調用 WordPress 的 API 并輸出內容、學(xué)習 HTML 用于寫(xiě)主題的模板、學(xué)習 CSS 用于“裝潢”我的博客、學(xué)習 jQuery 用于實(shí)現頁(yè)面動(dòng)態(tài)效果。是的,那個(gè)時(shí)候基本上大部分人接觸的是 jQuery 而不是 JavaScript,一個(gè) $ 函數就可以完成非常多的效果這讓我第一次感受到了“框架”所帶來(lái)的價(jià)值。于是便一步一步地發(fā)生了以下事情(不一定完全對,畢竟時(shí)間過(guò)太久了):
  1、我發(fā)現頁(yè)面上的一些樣式效果無(wú)法在 IE 瀏覽器上正常顯示,于是我就開(kāi)始到網(wǎng)上學(xué)習 CSS 在 IE 的各種特殊處理,包括 reset.css、normalize.css 等工具的使用;
  
  2、每次點(diǎn)擊鏈接都要刷新頁(yè)面,在那個(gè)網(wǎng)速不怎么好的年代體驗非常糟糕,于是乎就開(kāi)始研究怎么用 jQuery/JavaScript 實(shí)現不需要刷新頁(yè)面的情況下切換頁(yè)面的內容;通過(guò)查看文檔發(fā)現瀏覽器支持一種叫做 XMLHTTPRequest 的技術(shù),可以讓我們不需要通過(guò)跳轉的方式從服務(wù)器獲取到信息,從這里開(kāi)始了解到 HTML、XML 和 JSON 三種不同格式的區別;
  第一次知道了可以通過(guò)服務(wù)器傳遞 JSON 格式的純數據,然后前端通過(guò) JavaScript 對數據進(jìn)行解析,并且結合前端的模板引擎渲染成完整的 HTML;
  從這里又可以學(xué)習到如何通過(guò) URL 中的 path、query、hash 以及 POST 和 PUT 請求正文等信息向服務(wù)器傳遞信息,服務(wù)器通過(guò)這些信息動(dòng)態(tài)地對各種數據進(jìn)行處理并返回結果;
  SPA(Single Page Application)開(kāi)發(fā)習慣初見(jiàn)雛形;
  這樣我就來(lái)到了“白銀”階段了。
  接觸 Node.js
  當我正在愉快地設計著(zhù) WordPress 的自定義主題時(shí),偶然間我在某前端網(wǎng)站上了解到了一個(gè)新的技術(shù) —— Node.js。與它的相遇改變了我以后的學(xué)習路徑,影響至今。
  2009 年 Ryan Dahl 發(fā)布了一個(gè)基于 Chrome JavaScript V8 引擎開(kāi)發(fā)的程序運行環(huán)境 Node.js,它允許開(kāi)發(fā)者在除了瀏覽器以外的地方運行 JavaScript 語(yǔ)言,并且提供一些標準庫允許 JavaScript 腳本啟動(dòng)進(jìn)行啟動(dòng)一個(gè) HTTP 服務(wù)端應用這種以前在瀏覽器無(wú)法完成的事情。
  var http = require('http');http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');}).listen(8124, "127.0.0.1");console.log('Server running at http://127.0.0.1:8124/');
  <br />
  這一份代碼是 2010 年寫(xiě)在 Node.js 官網(wǎng)的一段實(shí)例代碼,機緣巧合之下我被這么一段簡(jiǎn)單的代碼深深地吸引住了,雖然當時(shí)安裝它仍需要從 GitHub 上克隆整個(gè)項目代碼到本地并依次運行以下指令:
  $ ./configure$ make$ make install
  <br />
  這一次編譯就得花上至少十分鐘,但完成安裝后運行上面的一段代碼,并在瀏覽器中打開(kāi) :8124/,然后在瀏覽器上看到 Hello World 字樣時(shí)仿佛新世界的門(mén)打開(kāi)了。因為當時(shí)我所接觸過(guò)的服務(wù)端程序只有 PHP,而 PHP 本質(zhì)上就是一個(gè)模板引擎,它并不能很直觀(guān)地處理請求本身而是借助 CGI 進(jìn)行響應。能做更多的事情,這件事情對剛學(xué)習編程不久的新手來(lái)說(shuō)是具有很大誘惑力的。
  從這里開(kāi)始,Node.js 配合 npm 便開(kāi)始了長(cháng)達 10 年的快速發(fā)展。從純服務(wù)端應用開(kāi)發(fā),到開(kāi)發(fā)工具、工程工具,再到如今的 FaaS(Function as a Service,Serverless)開(kāi)發(fā)方式。Node.js 已經(jīng)成為 Web 工程師不可或缺的一項技能,不管是用來(lái)開(kāi)發(fā)服務(wù)端應用還是開(kāi)發(fā)工具類(lèi)應用,甚至是使用 Electron 開(kāi)發(fā)桌面端應用還是配合 React Native 開(kāi)發(fā)移動(dòng)端 App,Node.js 能讓前端工程師了解更多系統級別的概念,如網(wǎng)絡(luò )、I/O、內存、文件系統等等,這些很多都是原本在瀏覽器端上看不到的。而學(xué)習這些知識對你理解前端開(kāi)發(fā)背后的一些原理有非常好的價(jià)值,就跟學(xué)習算法一樣。
  結論:請學(xué)習 Node.js 和其中涉及到的一些基本計算機原理。
  框架時(shí)代
  當我在做 WordPress 主題的時(shí)候,絕大部分的主題開(kāi)發(fā)者都會(huì )在前端做一些簡(jiǎn)單的效果,甚至有甚者會(huì )通過(guò) JavaScript 實(shí)現一些原本只能通過(guò)后端來(lái)完成的事情,比如文章列表、文章內容的加載和渲染。而當年這些主題開(kāi)發(fā)者基本上都會(huì )使用 jQuery 來(lái)進(jìn)行這些 JavaScript 的操作,因為純手寫(xiě) JavaScript 在當時(shí)來(lái)說(shuō)非常的繁瑣(ES4時(shí)代,很多現在被廣泛使用的原生 API 都仍未具備)所以當時(shí) jQuery 就是大家的首選方案。
  
  從非常早的 PrototypeJS、后來(lái)的 jQuery、進(jìn)入 MVC 時(shí)代的 Backbone,AngularJS 開(kāi)啟 MVVM 模式,React 引入 FP 的概念,Vue 成功開(kāi)啟了漸進(jìn)式開(kāi)發(fā)體驗的道路。一路下來(lái)一地的雞毛,被各路人馬詬病前端領(lǐng)域一個(gè)月開(kāi)發(fā)一個(gè)新框架,“學(xué)不動(dòng)了”。然而作為一個(gè)也寫(xiě)過(guò)框架、寫(xiě)過(guò)工具類(lèi)庫的開(kāi)發(fā)者,我很喜歡用一個(gè)經(jīng)常用于泛科技領(lǐng)域的例子來(lái)類(lèi)比前端領(lǐng)域:
  科技的終極目標,就是讓人民感覺(jué)不到科技。
  jQuery 時(shí)代,前端開(kāi)發(fā)者使用 JavaScript 的模式是從頁(yè)面中獲取 DOM 元素,添加事件,然后通過(guò) class 和 style 對頁(yè)面進(jìn)行動(dòng)態(tài)地變更,以完成對用戶(hù)行為的響應;
  Backbone 時(shí)代,原本用在桌面端軟件開(kāi)發(fā)中的 MVC 模式被引入到了前端開(kāi)發(fā)中,前端開(kāi)發(fā)者們發(fā)現 Web 開(kāi)發(fā)的復雜度已經(jīng)需要用這些更成熟的開(kāi)發(fā)模式進(jìn)行管理了;
  AngularJS 時(shí)代,從這里開(kāi)始 Google 把數據雙向綁定模式帶到前端開(kāi)發(fā)中,將原本需要通過(guò) JavaScript 控制 DOM 元素這一繁瑣的操作變成了只需要關(guān)心 Model 層需要改動(dòng)什么內容即可。而 Vue 則將這種模式的開(kāi)發(fā)成本降低到了一種相當可觀(guān)的程度,讓很多新手開(kāi)發(fā)者也能很簡(jiǎn)單地入手這種便捷的開(kāi)發(fā)模式。React 時(shí)代,Facebook 的科學(xué)家們把函數式編程的思想引入到前端開(kāi)發(fā)中,注重的是數據鏈路的可跟蹤、可回溯、可管理,讓整個(gè)數據鏈路是盡可能以單鏈路流轉。
  雖然前端領(lǐng)域常被說(shuō)“一個(gè)月一個(gè)新框架”,但實(shí)際上每一個(gè)框架在迭代的過(guò)程中都是解決了它們所在業(yè)務(wù)場(chǎng)景的實(shí)際需求的,并不是“拍腦袋”地想要把每一個(gè)技術(shù)細節做出一個(gè) break change。
  而目前我目前推薦的學(xué)習的框架是 React 和 Vue:
  結論:請不要害怕學(xué)習!不要懼怕新技術(shù)!
  工程之路
  雖然我在接觸了框架和 Node.js 之后,發(fā)現 JavaScript 除了能實(shí)現一般只用于展示內容和呈現簡(jiǎn)單交互以外還能做更多的事情。但本質(zhì)上還是圍繞著(zhù)多個(gè)頁(yè)面進(jìn)行頁(yè)面上 DOM 元素的控制,而直到我打開(kāi)了 Google 的一些網(wǎng)站時(shí),我才發(fā)現原來(lái)網(wǎng)站除了能叫頁(yè)面以外,還能稱(chēng)之為“應用”。
  自從 Google 上線(xiàn)了一個(gè)完全不需要刷新頁(yè)面就能完成所有事情而且體驗很不錯的 GMail 之后,我們發(fā)現網(wǎng)頁(yè)原來(lái)也是可以承載那么復雜的邏輯和應用場(chǎng)景的。大家的熱情異常地高漲,想著(zhù)能不能讓自己所負責的項目也有這么厲害高級的樣子。但隨著(zhù)項目不斷地復雜,代碼規模也變得非常難以管理,而這個(gè)時(shí)候就需要工程化的引入。
  ? 工程化協(xié)作對于企業(yè)來(lái)說(shuō)除了研發(fā)效率要足夠高以外,研發(fā)鏈路的安全、合規也是同樣重要的。
  什么叫安全合規?可管理的代碼版本、可控制的發(fā)布流程、可管控的灰度機制,都是大廠(chǎng)用于保證項目流程穩定進(jìn)行的必要工具。
  有很多初學(xué)者或者還沒(méi)有大公司經(jīng)驗的同學(xué)在寫(xiě)項目時(shí)都是單打獨斗的,但更多的一線(xiàn)項目都需要至少 2~3 個(gè)甚至更多的人員一同參與開(kāi)發(fā)的。
  而這種時(shí)候,因為每個(gè)人的水平和開(kāi)發(fā)習慣都是不一致的,而這些不一致就直接導致整體研發(fā)效率和項目進(jìn)度受到極大的影響。所以就需要一種能夠讓大家在一個(gè)水平線(xiàn)上進(jìn)行開(kāi)發(fā)的模式,工程化需求便應運而生。
  ? 工程化開(kāi)發(fā)工具
  從直接將 JavaScript 代碼用 查看全部

  2020年,我們該如何學(xué)習 WEB 前端開(kāi)發(fā)?
  每當想要開(kāi)始學(xué)習,腦子里總會(huì )跳出一系列問(wèn)題:WEB前端的學(xué)習先后順序是什么?PC端必須要掌握哪些知識和框架?移動(dòng)端要掌握哪些知識和框架?TypeScript和node.js是否為可學(xué)可不學(xué)?新手應該按照什么先后次第學(xué)習呢?本文是阿里巴巴淘系技術(shù)部高級前端工程師——小問(wèn)的個(gè)人經(jīng)驗總結,希望幫到處于迷茫期的你!
  我們可以把學(xué)習路線(xiàn)比作游戲中的段位上分,在不同的分段都有自己的定位和要鍛煉的事情:
  青銅—從零開(kāi)始小學(xué)生:懷著(zhù)滿(mǎn)腔的熱血,看到了這一個(gè)行業(yè)的希望和未來(lái),準備開(kāi)始學(xué)習 Web 開(kāi)發(fā)知識。
  白銀 —懵懵懂懂初學(xué)者:懂得如何使用 HTML、CSS 和 JavaScript 三大件來(lái)實(shí)現基本頁(yè)面開(kāi)發(fā)功能
  黃金—輕車(chē)熟路新玩家:懂得使用框架來(lái)實(shí)現上面所舉例項目
  鉑金 V—初出茅廬新司機: 懂得如何使用腳手架創(chuàng )建項目,并且能將代碼結構根據模塊化的思想進(jìn)行安排
  鉑金 I—基本上手好司機:如果是懂得如何利用 Node.js 或 TypeScript 編寫(xiě)業(yè)務(wù)代碼的
  鉆石 V—淡定自然老司機:如果是對邏輯抽象、模塊封裝有了一定的理解和經(jīng)驗的
  鉆石 I—賽道新手初學(xué)者:如果上面的條件你都已經(jīng)滿(mǎn)足了
  到這里我劃了一條從 0 到高級前端工程師級別的純技術(shù)路線(xiàn)。相信有不少有經(jīng)驗的同學(xué)會(huì )發(fā)現中間我省略了不少內容,但也不難發(fā)現路線(xiàn)中從前半段的“學(xué)習”逐步變成后半段的“思考”。優(yōu)秀的工程師除了需要有在純技術(shù)領(lǐng)域的沉淀以外,還需要更多對技術(shù)、團隊、ROI(投資回報率)的思考,當然這依然不足以支撐我們平穩地渡過(guò)“程序員 35 歲危機”,前面的路還有很長(cháng),鉆石往上還有王者呢,誰(shuí)說(shuō)程序員就是青春飯碗的?
  回想起很多年前我也跟你一樣是一個(gè)完全的新手,從 0 開(kāi)始慢慢自學(xué)摸索 Web 開(kāi)發(fā),甚至后來(lái)我也沒(méi)有進(jìn)入科班學(xué)習計算機,那么來(lái)聽(tīng)聽(tīng)我作為一個(gè)“前人”是如何完全靠自學(xué)至今的故事吧。
  我的從 0 開(kāi)始
  我是一個(gè)完全從自學(xué)開(kāi)始的前端工程師,想起來(lái)第一次接觸前端就是初中那會(huì )特別流行合租 VPS 然后注冊一個(gè) .tk 的免費域名。而作為一個(gè)剛入門(mén) Web 開(kāi)發(fā)不久的小屁孩來(lái)說(shuō),用這種方式一探“大人的世界”屬實(shí)讓人興奮。而當時(shí)最流行的博客管理軟件就是用 PHP 寫(xiě)的 WordPress,作為一個(gè)十分成熟的 CMS 軟件來(lái)說(shuō) WordPress 當時(shí)就有了非常豐富的社區資源,比如主題、模板、插件等等。
  而作為一個(gè)十分注重個(gè)性化的小屁孩來(lái)說(shuō),當然是要自己做一個(gè)主題的??!于是我就從此踏上了 Web 開(kāi)發(fā)的不歸路,在此之前我所接觸的都是 Visual Basic 這樣的 Native 的語(yǔ)言。
  以 WordPress 主題作為切入點(diǎn),我開(kāi)始學(xué)習 PHP 用于調用 WordPress 的 API 并輸出內容、學(xué)習 HTML 用于寫(xiě)主題的模板、學(xué)習 CSS 用于“裝潢”我的博客、學(xué)習 jQuery 用于實(shí)現頁(yè)面動(dòng)態(tài)效果。是的,那個(gè)時(shí)候基本上大部分人接觸的是 jQuery 而不是 JavaScript,一個(gè) $ 函數就可以完成非常多的效果這讓我第一次感受到了“框架”所帶來(lái)的價(jià)值。于是便一步一步地發(fā)生了以下事情(不一定完全對,畢竟時(shí)間過(guò)太久了):
  1、我發(fā)現頁(yè)面上的一些樣式效果無(wú)法在 IE 瀏覽器上正常顯示,于是我就開(kāi)始到網(wǎng)上學(xué)習 CSS 在 IE 的各種特殊處理,包括 reset.css、normalize.css 等工具的使用;
  
  2、每次點(diǎn)擊鏈接都要刷新頁(yè)面,在那個(gè)網(wǎng)速不怎么好的年代體驗非常糟糕,于是乎就開(kāi)始研究怎么用 jQuery/JavaScript 實(shí)現不需要刷新頁(yè)面的情況下切換頁(yè)面的內容;通過(guò)查看文檔發(fā)現瀏覽器支持一種叫做 XMLHTTPRequest 的技術(shù),可以讓我們不需要通過(guò)跳轉的方式從服務(wù)器獲取到信息,從這里開(kāi)始了解到 HTML、XML 和 JSON 三種不同格式的區別;
  第一次知道了可以通過(guò)服務(wù)器傳遞 JSON 格式的純數據,然后前端通過(guò) JavaScript 對數據進(jìn)行解析,并且結合前端的模板引擎渲染成完整的 HTML;
  從這里又可以學(xué)習到如何通過(guò) URL 中的 path、query、hash 以及 POST 和 PUT 請求正文等信息向服務(wù)器傳遞信息,服務(wù)器通過(guò)這些信息動(dòng)態(tài)地對各種數據進(jìn)行處理并返回結果;
  SPA(Single Page Application)開(kāi)發(fā)習慣初見(jiàn)雛形;
  這樣我就來(lái)到了“白銀”階段了。
  接觸 Node.js
  當我正在愉快地設計著(zhù) WordPress 的自定義主題時(shí),偶然間我在某前端網(wǎng)站上了解到了一個(gè)新的技術(shù) —— Node.js。與它的相遇改變了我以后的學(xué)習路徑,影響至今。
  2009 年 Ryan Dahl 發(fā)布了一個(gè)基于 Chrome JavaScript V8 引擎開(kāi)發(fā)的程序運行環(huán)境 Node.js,它允許開(kāi)發(fā)者在除了瀏覽器以外的地方運行 JavaScript 語(yǔ)言,并且提供一些標準庫允許 JavaScript 腳本啟動(dòng)進(jìn)行啟動(dòng)一個(gè) HTTP 服務(wù)端應用這種以前在瀏覽器無(wú)法完成的事情。
  var http = require('http');http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');}).listen(8124, "127.0.0.1");console.log('Server running at http://127.0.0.1:8124/');
  <br />
  這一份代碼是 2010 年寫(xiě)在 Node.js 官網(wǎng)的一段實(shí)例代碼,機緣巧合之下我被這么一段簡(jiǎn)單的代碼深深地吸引住了,雖然當時(shí)安裝它仍需要從 GitHub 上克隆整個(gè)項目代碼到本地并依次運行以下指令:
  $ ./configure$ make$ make install
  <br />
  這一次編譯就得花上至少十分鐘,但完成安裝后運行上面的一段代碼,并在瀏覽器中打開(kāi) :8124/,然后在瀏覽器上看到 Hello World 字樣時(shí)仿佛新世界的門(mén)打開(kāi)了。因為當時(shí)我所接觸過(guò)的服務(wù)端程序只有 PHP,而 PHP 本質(zhì)上就是一個(gè)模板引擎,它并不能很直觀(guān)地處理請求本身而是借助 CGI 進(jìn)行響應。能做更多的事情,這件事情對剛學(xué)習編程不久的新手來(lái)說(shuō)是具有很大誘惑力的。
  從這里開(kāi)始,Node.js 配合 npm 便開(kāi)始了長(cháng)達 10 年的快速發(fā)展。從純服務(wù)端應用開(kāi)發(fā),到開(kāi)發(fā)工具、工程工具,再到如今的 FaaS(Function as a Service,Serverless)開(kāi)發(fā)方式。Node.js 已經(jīng)成為 Web 工程師不可或缺的一項技能,不管是用來(lái)開(kāi)發(fā)服務(wù)端應用還是開(kāi)發(fā)工具類(lèi)應用,甚至是使用 Electron 開(kāi)發(fā)桌面端應用還是配合 React Native 開(kāi)發(fā)移動(dòng)端 App,Node.js 能讓前端工程師了解更多系統級別的概念,如網(wǎng)絡(luò )、I/O、內存、文件系統等等,這些很多都是原本在瀏覽器端上看不到的。而學(xué)習這些知識對你理解前端開(kāi)發(fā)背后的一些原理有非常好的價(jià)值,就跟學(xué)習算法一樣。
  結論:請學(xué)習 Node.js 和其中涉及到的一些基本計算機原理。
  框架時(shí)代
  當我在做 WordPress 主題的時(shí)候,絕大部分的主題開(kāi)發(fā)者都會(huì )在前端做一些簡(jiǎn)單的效果,甚至有甚者會(huì )通過(guò) JavaScript 實(shí)現一些原本只能通過(guò)后端來(lái)完成的事情,比如文章列表、文章內容的加載和渲染。而當年這些主題開(kāi)發(fā)者基本上都會(huì )使用 jQuery 來(lái)進(jìn)行這些 JavaScript 的操作,因為純手寫(xiě) JavaScript 在當時(shí)來(lái)說(shuō)非常的繁瑣(ES4時(shí)代,很多現在被廣泛使用的原生 API 都仍未具備)所以當時(shí) jQuery 就是大家的首選方案。
  
  從非常早的 PrototypeJS、后來(lái)的 jQuery、進(jìn)入 MVC 時(shí)代的 Backbone,AngularJS 開(kāi)啟 MVVM 模式,React 引入 FP 的概念,Vue 成功開(kāi)啟了漸進(jìn)式開(kāi)發(fā)體驗的道路。一路下來(lái)一地的雞毛,被各路人馬詬病前端領(lǐng)域一個(gè)月開(kāi)發(fā)一個(gè)新框架,“學(xué)不動(dòng)了”。然而作為一個(gè)也寫(xiě)過(guò)框架、寫(xiě)過(guò)工具類(lèi)庫的開(kāi)發(fā)者,我很喜歡用一個(gè)經(jīng)常用于泛科技領(lǐng)域的例子來(lái)類(lèi)比前端領(lǐng)域:
  科技的終極目標,就是讓人民感覺(jué)不到科技。
  jQuery 時(shí)代,前端開(kāi)發(fā)者使用 JavaScript 的模式是從頁(yè)面中獲取 DOM 元素,添加事件,然后通過(guò) class 和 style 對頁(yè)面進(jìn)行動(dòng)態(tài)地變更,以完成對用戶(hù)行為的響應;
  Backbone 時(shí)代,原本用在桌面端軟件開(kāi)發(fā)中的 MVC 模式被引入到了前端開(kāi)發(fā)中,前端開(kāi)發(fā)者們發(fā)現 Web 開(kāi)發(fā)的復雜度已經(jīng)需要用這些更成熟的開(kāi)發(fā)模式進(jìn)行管理了;
  AngularJS 時(shí)代,從這里開(kāi)始 Google 把數據雙向綁定模式帶到前端開(kāi)發(fā)中,將原本需要通過(guò) JavaScript 控制 DOM 元素這一繁瑣的操作變成了只需要關(guān)心 Model 層需要改動(dòng)什么內容即可。而 Vue 則將這種模式的開(kāi)發(fā)成本降低到了一種相當可觀(guān)的程度,讓很多新手開(kāi)發(fā)者也能很簡(jiǎn)單地入手這種便捷的開(kāi)發(fā)模式。React 時(shí)代,Facebook 的科學(xué)家們把函數式編程的思想引入到前端開(kāi)發(fā)中,注重的是數據鏈路的可跟蹤、可回溯、可管理,讓整個(gè)數據鏈路是盡可能以單鏈路流轉。
  雖然前端領(lǐng)域常被說(shuō)“一個(gè)月一個(gè)新框架”,但實(shí)際上每一個(gè)框架在迭代的過(guò)程中都是解決了它們所在業(yè)務(wù)場(chǎng)景的實(shí)際需求的,并不是“拍腦袋”地想要把每一個(gè)技術(shù)細節做出一個(gè) break change。
  而目前我目前推薦的學(xué)習的框架是 React 和 Vue:
  結論:請不要害怕學(xué)習!不要懼怕新技術(shù)!
  工程之路
  雖然我在接觸了框架和 Node.js 之后,發(fā)現 JavaScript 除了能實(shí)現一般只用于展示內容和呈現簡(jiǎn)單交互以外還能做更多的事情。但本質(zhì)上還是圍繞著(zhù)多個(gè)頁(yè)面進(jìn)行頁(yè)面上 DOM 元素的控制,而直到我打開(kāi)了 Google 的一些網(wǎng)站時(shí),我才發(fā)現原來(lái)網(wǎng)站除了能叫頁(yè)面以外,還能稱(chēng)之為“應用”。
  自從 Google 上線(xiàn)了一個(gè)完全不需要刷新頁(yè)面就能完成所有事情而且體驗很不錯的 GMail 之后,我們發(fā)現網(wǎng)頁(yè)原來(lái)也是可以承載那么復雜的邏輯和應用場(chǎng)景的。大家的熱情異常地高漲,想著(zhù)能不能讓自己所負責的項目也有這么厲害高級的樣子。但隨著(zhù)項目不斷地復雜,代碼規模也變得非常難以管理,而這個(gè)時(shí)候就需要工程化的引入。
  ? 工程化協(xié)作對于企業(yè)來(lái)說(shuō)除了研發(fā)效率要足夠高以外,研發(fā)鏈路的安全、合規也是同樣重要的。
  什么叫安全合規?可管理的代碼版本、可控制的發(fā)布流程、可管控的灰度機制,都是大廠(chǎng)用于保證項目流程穩定進(jìn)行的必要工具。
  有很多初學(xué)者或者還沒(méi)有大公司經(jīng)驗的同學(xué)在寫(xiě)項目時(shí)都是單打獨斗的,但更多的一線(xiàn)項目都需要至少 2~3 個(gè)甚至更多的人員一同參與開(kāi)發(fā)的。
  而這種時(shí)候,因為每個(gè)人的水平和開(kāi)發(fā)習慣都是不一致的,而這些不一致就直接導致整體研發(fā)效率和項目進(jìn)度受到極大的影響。所以就需要一種能夠讓大家在一個(gè)水平線(xiàn)上進(jìn)行開(kāi)發(fā)的模式,工程化需求便應運而生。
  ? 工程化開(kāi)發(fā)工具
  從直接將 JavaScript 代碼用

老九發(fā)布10個(gè)基于java的cms網(wǎng)站內容管理系統方案說(shuō)明

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 103 次瀏覽 ? 2022-07-13 07:05 ? 來(lái)自相關(guān)話(huà)題

  老九發(fā)布10個(gè)基于java的cms網(wǎng)站內容管理系統方案說(shuō)明
  
  10個(gè)基于java的cms網(wǎng)站內容管理系統方案說(shuō)明本文由探索編程做的簡(jiǎn)單的總結,不代表老九發(fā)布于cms平臺的技術(shù)解讀。項目采用shop++為模板,在后臺進(jìn)行簡(jiǎn)單的網(wǎng)頁(yè)開(kāi)發(fā),在模板中首頁(yè)、管理、分類(lèi)、列表、搜索、商品頁(yè)面定制。1.lnmp安裝和上線(xiàn)2.數據庫導入數據庫通過(guò)jdbc導入數據庫。管理系統通過(guò)maven上線(xiàn),maven按照業(yè)務(wù)層別導入數據庫。
  
  redis通過(guò)hello(key)讀取數據庫。redis集群。3.數據導出redis數據導出通過(guò)maven導入數據庫。mysql和mssql組成二層關(guān)系,將mysql導出的jdbcartifact導入redis,通過(guò)配置路由,mysql可以通過(guò)jdbc直接連接redis。4.在線(xiàn)響應爬蟲(chóng)通過(guò)一段短代碼部署在線(xiàn)登錄;數據使用google開(kāi)源的clientmanager更新5.集群后臺管理服務(wù)組建,開(kāi)始搭建后臺管理系統(主要是了解整個(gè)組建)6.數據分析使用pyspark,線(xiàn)上服務(wù)由于接入的數據量較大,配置繁瑣,故采用maven在線(xiàn)集群機制來(lái)管理,優(yōu)化工作量,可達到滿(mǎn)足實(shí)際需求。
  7.文件共享代碼可以通過(guò)nginx和mongodb連接,以p3協(xié)議進(jìn)行文件共享。8.二次開(kāi)發(fā)服務(wù)可以通過(guò)java與.netcore工具集做二次開(kāi)發(fā),包括但不限于登錄認證,用戶(hù)管理,網(wǎng)站信息頁(yè)面,甚至是代碼在javaee開(kāi)發(fā)中也應該考慮ioen。9.運維維護代碼從去年開(kāi)始,每個(gè)團隊都有建立一個(gè)代碼倉庫,初期即使整個(gè)團隊維護,也并不夠用,組織一個(gè)實(shí)習的開(kāi)發(fā)人員維護也是要花費時(shí)間,因此項目上線(xiàn)之后通過(guò)實(shí)習生維護,可達到代碼及時(shí)交付,并且容易維護更新。截至發(fā)文,加上老八校實(shí)習生維護共三個(gè)月。-最近工作流程較為忙碌,停更一段時(shí)間,多多關(guān)照,謝謝~。 查看全部

  老九發(fā)布10個(gè)基于java的cms網(wǎng)站內容管理系統方案說(shuō)明
  
  10個(gè)基于java的cms網(wǎng)站內容管理系統方案說(shuō)明本文由探索編程做的簡(jiǎn)單的總結,不代表老九發(fā)布于cms平臺的技術(shù)解讀。項目采用shop++為模板,在后臺進(jìn)行簡(jiǎn)單的網(wǎng)頁(yè)開(kāi)發(fā),在模板中首頁(yè)、管理、分類(lèi)、列表、搜索、商品頁(yè)面定制。1.lnmp安裝和上線(xiàn)2.數據庫導入數據庫通過(guò)jdbc導入數據庫。管理系統通過(guò)maven上線(xiàn),maven按照業(yè)務(wù)層別導入數據庫。
  
  redis通過(guò)hello(key)讀取數據庫。redis集群。3.數據導出redis數據導出通過(guò)maven導入數據庫。mysql和mssql組成二層關(guān)系,將mysql導出的jdbcartifact導入redis,通過(guò)配置路由,mysql可以通過(guò)jdbc直接連接redis。4.在線(xiàn)響應爬蟲(chóng)通過(guò)一段短代碼部署在線(xiàn)登錄;數據使用google開(kāi)源的clientmanager更新5.集群后臺管理服務(wù)組建,開(kāi)始搭建后臺管理系統(主要是了解整個(gè)組建)6.數據分析使用pyspark,線(xiàn)上服務(wù)由于接入的數據量較大,配置繁瑣,故采用maven在線(xiàn)集群機制來(lái)管理,優(yōu)化工作量,可達到滿(mǎn)足實(shí)際需求。
  7.文件共享代碼可以通過(guò)nginx和mongodb連接,以p3協(xié)議進(jìn)行文件共享。8.二次開(kāi)發(fā)服務(wù)可以通過(guò)java與.netcore工具集做二次開(kāi)發(fā),包括但不限于登錄認證,用戶(hù)管理,網(wǎng)站信息頁(yè)面,甚至是代碼在javaee開(kāi)發(fā)中也應該考慮ioen。9.運維維護代碼從去年開(kāi)始,每個(gè)團隊都有建立一個(gè)代碼倉庫,初期即使整個(gè)團隊維護,也并不夠用,組織一個(gè)實(shí)習的開(kāi)發(fā)人員維護也是要花費時(shí)間,因此項目上線(xiàn)之后通過(guò)實(shí)習生維護,可達到代碼及時(shí)交付,并且容易維護更新。截至發(fā)文,加上老八校實(shí)習生維護共三個(gè)月。-最近工作流程較為忙碌,停更一段時(shí)間,多多關(guān)照,謝謝~。

10個(gè)基于java的cms網(wǎng)站內容管理系統方案(圖)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 106 次瀏覽 ? 2022-06-30 15:01 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統方案(圖)
  10個(gè)基于java的cms網(wǎng)站內容管理系統方案淺析如果你覺(jué)得上面的內容對你很有幫助,請點(diǎn)贊關(guān)注,如果你覺(jué)得對你有幫助,請點(diǎn)擊加關(guān)注,如果覺(jué)得對你有幫助,請點(diǎn)擊加關(guān)注。
  
  java可以通過(guò)nimjs實(shí)現,代碼可以通過(guò)github上找到。另外可以通過(guò)開(kāi)發(fā)一個(gè)可讀性高,輕量級的storage系統來(lái)實(shí)現。
  先說(shuō)一點(diǎn),移動(dòng)互聯(lián)網(wǎng)方面java開(kāi)發(fā)要比c++困難一些。如果不能通過(guò)java開(kāi)發(fā)的網(wǎng)站,想象一下要寫(xiě)多難看的代碼。
  
  blog的模式可以使用現在的社交客戶(hù)端或者hybrid網(wǎng)頁(yè)的模式,這兩個(gè)都可以看作是sns在移動(dòng)端的封裝,都可以作為你實(shí)現個(gè)人網(wǎng)站的切入點(diǎn)。當然,這個(gè)前提是你要把產(chǎn)品定位和市場(chǎng)確定好,否則就相當于在說(shuō):等有了用戶(hù)覺(jué)得你做得不錯了,再搞個(gè)網(wǎng)站吧。
  豆瓣啊。如果你看過(guò)這個(gè),就知道有多可怕??梢赃@么做,把豆瓣網(wǎng)改版,從移動(dòng)端實(shí)現,如果加上小組,豆瓣和你個(gè)人網(wǎng)站可以通過(guò)與豆瓣網(wǎng)的feed消息功能整合,整合以后感覺(jué)一下。如果再加上你的社區內容,很可怕。不過(guò)這些都是你自己想象吧,不做下去到時(shí)候會(huì )更絕望。
  增加互動(dòng)。比如興趣相投,可以組一個(gè)小組,天南海北的加入,這樣你會(huì )做得更專(zhuān)業(yè)。最好可以和facebook產(chǎn)生一些合作。這樣玩才可以真正的usergeneratedforallapps。 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統方案(圖)
  10個(gè)基于java的cms網(wǎng)站內容管理系統方案淺析如果你覺(jué)得上面的內容對你很有幫助,請點(diǎn)贊關(guān)注,如果你覺(jué)得對你有幫助,請點(diǎn)擊加關(guān)注,如果覺(jué)得對你有幫助,請點(diǎn)擊加關(guān)注。
  
  java可以通過(guò)nimjs實(shí)現,代碼可以通過(guò)github上找到。另外可以通過(guò)開(kāi)發(fā)一個(gè)可讀性高,輕量級的storage系統來(lái)實(shí)現。
  先說(shuō)一點(diǎn),移動(dòng)互聯(lián)網(wǎng)方面java開(kāi)發(fā)要比c++困難一些。如果不能通過(guò)java開(kāi)發(fā)的網(wǎng)站,想象一下要寫(xiě)多難看的代碼。
  
  blog的模式可以使用現在的社交客戶(hù)端或者hybrid網(wǎng)頁(yè)的模式,這兩個(gè)都可以看作是sns在移動(dòng)端的封裝,都可以作為你實(shí)現個(gè)人網(wǎng)站的切入點(diǎn)。當然,這個(gè)前提是你要把產(chǎn)品定位和市場(chǎng)確定好,否則就相當于在說(shuō):等有了用戶(hù)覺(jué)得你做得不錯了,再搞個(gè)網(wǎng)站吧。
  豆瓣啊。如果你看過(guò)這個(gè),就知道有多可怕??梢赃@么做,把豆瓣網(wǎng)改版,從移動(dòng)端實(shí)現,如果加上小組,豆瓣和你個(gè)人網(wǎng)站可以通過(guò)與豆瓣網(wǎng)的feed消息功能整合,整合以后感覺(jué)一下。如果再加上你的社區內容,很可怕。不過(guò)這些都是你自己想象吧,不做下去到時(shí)候會(huì )更絕望。
  增加互動(dòng)。比如興趣相投,可以組一個(gè)小組,天南海北的加入,這樣你會(huì )做得更專(zhuān)業(yè)。最好可以和facebook產(chǎn)生一些合作。這樣玩才可以真正的usergeneratedforallapps。

推薦 16 個(gè)優(yōu)秀的 Vue 開(kāi)源項目

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 403 次瀏覽 ? 2022-06-23 11:36 ? 來(lái)自相關(guān)話(huà)題

  推薦 16 個(gè)優(yōu)秀的 Vue 開(kāi)源項目
  01CMSand Generators
  頁(yè)面工具包
  
  Pagekit 是一個(gè)開(kāi)源的CMS,在Vue. js 和Symphony框架的幫助下構建。CMS是模塊化的,所以你可以逐步擴展功能。Pagekit是在MIT許可證下發(fā)布的,因此它可以自由地修改、共享和重新發(fā)布,沒(méi)有任何限制。
  該產(chǎn)品具有CMS的所有主要和高級功能:
  ·可定制的分析儀表板與網(wǎng)站性能;
  ·網(wǎng)站內容編輯頁(yè)面;
  ·內置博客;
  ·HTML和Markdown 編輯器;
  ·文件管理器;
  ·用戶(hù)角色管理。
  還有一些東西和特點(diǎn)對開(kāi)發(fā)者特別有用。該產(chǎn)品使用簡(jiǎn)單的ORM、模塊化架構和包管理構建。還有一個(gè)內置的調試工具欄,可以幫助開(kāi)發(fā)人員監視性能、路由、數據庫查詢(xún)和調試內部系統事件、擴展甚至可以添加自己的功能。另外,也可以使用CLI執行系統更新、安裝和卸載擴展和主題,以及直接從終端清除緩存。
  該產(chǎn)品有一個(gè)強大的貢獻指南,團隊歡迎人們來(lái)修復錯誤,翻譯或擴展CMS的功能。社區沒(méi)有那么大,但非常發(fā)達,熱心幫助新人。
  因此,這是一個(gè)非常強大的產(chǎn)品,具有非常全面的文檔和透明的貢獻指南。開(kāi)啟開(kāi)源世界之路的絕佳選擇。
  02Vuepress
  
  VuePress 是一個(gè)由Vue. js 作者EvanYou 創(chuàng )建的基于Vue的靜態(tài)站點(diǎn)生成器。在VuePress 幫助下,網(wǎng)站創(chuàng )建使用VueRouter 、Vue和webpack 。最初,該產(chǎn)品是作為編寫(xiě)技術(shù)文檔的工具而創(chuàng )建的,但現在它是一個(gè)小型、緊湊、功能強大的headless CMS 。在VuePress 中你用Markdown 寫(xiě)內容,然后轉換成預渲染的靜態(tài)HTML文件。
  該項目有一個(gè)組織良好的捐款指南,工作流程透明。它還有很好的問(wèn)題管理功能。社區有超過(guò)300個(gè)活躍貢獻者,他們可以支持你。這是你開(kāi)始為開(kāi)源項目做貢獻的好選擇。
  03Vue店面
  
  Vuestorefront是一款面向電子商務(wù)的PWA,可以連接到幾乎任何電子商務(wù)后端:它使用了headless 架構。這包括流行的BigCommerce 平臺、Magento、Shopware 等。VueStorefront 的一些優(yōu)勢包括移動(dòng)優(yōu)先的方法、服務(wù)器端渲染(有利于SEO)和離線(xiàn)模式。
  該產(chǎn)品擁有一個(gè)發(fā)達的社區:Slack中約有2000名開(kāi)發(fā)者和180多名活躍貢獻者。這是特別有價(jià)值的,因為團隊有一個(gè)清晰的路線(xiàn)圖,所以你作為一個(gè)貢獻者可以選擇你可以做的任務(wù)??傊?,這是一個(gè)非常有趣的,支持和需要在上面花時(shí)間的產(chǎn)品。
  04Vuegg
  
  Vuegg 允許您將組件直接拖放到可視化編輯器中,并根據你的選擇移動(dòng)它們的大小,從而構建Vue. js 項目。這個(gè)項目的目的是合并設計和原型到一個(gè)單一的過(guò)程。
  顯著(zhù)特征:
  ·通過(guò)拖放組件和移動(dòng)/調整它們的大小來(lái)模擬/還原它們;
  ·支持標準鼠標和鍵盤(pán)組合;
  ·響應式預覽(手機、平板電腦、網(wǎng)絡(luò ));
  ·一組基本的HTML5元素;
  ·材料設計組件(vue- mdc - adapter );
  ·Vuejs 源代碼生成(download . zip )。
  這個(gè)項目有一個(gè)清晰的路線(xiàn)圖,你可以直接在Github上看到。由于該項目是相當新的,仍在進(jìn)行中的工作沒(méi)有貢獻指南,但你可以自由的打開(kāi)任何問(wèn)題和公關(guān)。
  05Gridsome
  
  Gridsome 與VuePress有許多相似之處,但它采用了一種不同的非常強大的方法來(lái)處理數據源。它允許你連接并使用應用中的許多不同類(lèi)型的數據,然后將這些數據統一到一個(gè)GraphQL 層中?;旧?,Gridsome 的前端功能用Vue,數據管理用GraphQL 。
  工作方式可以概括為以下三個(gè)步驟:
  你提供Markdown 、JSON、YAML或CVS數據格式的內容,或者從WordPress或Drupal等CMS導入內容;
  內容轉化為一個(gè)GraphQL 層,提供集中的數據管理;
  然后用這些數據用Vue構建你的應用。
  在開(kāi)發(fā)方面,文檔有一個(gè)清晰的路線(xiàn)圖、一個(gè)描述良好的更改日志和一個(gè)貢獻指南。投稿是一個(gè)不錯的選擇。
  06UI組件
  Vuetify
  
  Vuetify 根據MaterialDesign 規范提供了大量精心制作的組件(80 +)。Vueti fy 結合了Vue. js 和Material的所有優(yōu)點(diǎn)。該框架是與RTL和VueCLI - 3 兼容。Vuetify 的所有組件都有很好的記錄,也有清晰的示例。它與Vue的服務(wù)器端渲染(SSR)一起工作。Vuetify 支持所有現代網(wǎng)絡(luò )瀏覽器——甚至是IE11 和Safari9 +(使用多功能填充)。它還提供了現成的項目腳手架,這樣您就可以用一個(gè)命令開(kāi)始構建您的Vue. js 應用程序。
  它提供了一組基于材料設計的組件,例如:
  ·按鈕;
  ·投入;
  ·卡片;
  ·表,
  ·清單。
  Vuetify 背后有一個(gè)充滿(mǎn)活力的社區,有超過(guò)500個(gè)貢獻者,他們創(chuàng )建了許多Vuetify 插件。它具有成為一個(gè)好的開(kāi)源的所有主要組件:廣泛的文檔、貢獻指南、問(wèn)題管理。但在我們看來(lái),這很難做出貢獻,因為社區已經(jīng)很大了。
  07Buefy
  
  Buefy基于Bulma為Vue. js 提供了輕量級的UI組件。Buefy有兩個(gè)核心原則:讓事情簡(jiǎn)單化,輕量化。這也解釋了為什么它唯一的依賴(lài)是Vue和Bulma 。雖然它只有40多個(gè)組件,但它為你提供了隨時(shí)可用的移動(dòng)優(yōu)先和響應式的UI組件。
  特點(diǎn):
  ·支持MaterialDesign 圖標和FontAwesome ;
  ·非常輕便,除了Vue& Bu lma 之外沒(méi)有內部依賴(lài);
  ·約88KB min + gzip ;
  ·語(yǔ)義代碼輸出。
  08VueMaterial
  
  VUEMaterial簡(jiǎn)單,輕巧,完全按照GoogleMaterial Design規范建造。VUE材料提供超過(guò)56個(gè)組件來(lái)構建不同類(lèi)型的布局。一個(gè)偉大的事情是材料設計框架有真正徹底的文檔。該框架非常輕量級,包含完整的組件,完全符合GoogleMaterial Design準則。這種設計適合每一個(gè)屏幕,并支持每一個(gè)現代瀏覽器。
  路線(xiàn)圖、貢獻指南、好的文檔和更新日志都在這里。對于喜歡UI項目的開(kāi)發(fā)者來(lái)說(shuō),是一個(gè)不錯的選擇。
  09應用
  Koel
  Koel是一個(gè)個(gè)人音樂(lè )流媒體服務(wù),你可以根據你的需要定制??蛻?hù)端用Vue編寫(xiě),后端用Laravel編寫(xiě)。koel以web開(kāi)發(fā)者為目標,采用了一些更現代化的web技術(shù),比如flexbox 、音頻和拖放api等等。
  這個(gè)項目在Github上相當受歡迎,有52個(gè)貢獻者。不幸的是,沒(méi)有詳細的貢獻指南,但是作者在Github上寫(xiě)道,在你提交任何東西之前,你需要打開(kāi)一個(gè)問(wèn)題。還有一個(gè)通過(guò)Opencollective 贊助該項目的選項。
  我們喜歡這個(gè)項目背后的想法,使一個(gè)流媒體服務(wù),將由社區開(kāi)發(fā)。因此,如果你熱愛(ài)音樂(lè ),想要提高自己的Vue技能,投稿會(huì )是一個(gè)不錯的選擇。
  10Eagle.js
  
  Eagle. js 是使用Vue構建的強大、靈活、獨特的幻燈片顯示系統。它允許你在演示文稿中創(chuàng )建易于重用的組件、幻燈片和樣式。它還支持動(dòng)畫(huà),主題,和互動(dòng)小部件,這是偉大的網(wǎng)頁(yè)演示。微信搜索公眾號:Java后端編程,回復:java 領(lǐng)取資料 。
  使用這個(gè)庫可以做的最重要的事情之一是將幻燈片放在單獨的文件中,然后在其他幻燈片顯示中重用它。你還可以將特定幻燈片顯示的幻燈片導入另一個(gè)幻燈片。創(chuàng )建者還提供了幾個(gè)模板,可以輕松地開(kāi)始開(kāi)發(fā)。
  這個(gè)項目有一個(gè)貢獻指南,里面有你可以提供幫助的想法。我們認為這是一個(gè)值得花時(shí)間做的好項目:它真的幫助了很多人做演示。此外,在Eagle的幫助下,開(kāi)始學(xué)習Vue很容易。
  11工具包
  Nuxt.js
  
  Nuxt是一個(gè)用于構建通用應用程序的簡(jiǎn)單而直接的框架:服務(wù)器呈現的應用、單頁(yè)應用、漸進(jìn)式Web應用,或者只是將其用作靜態(tài)站點(diǎn)生成器。它也是模塊化的,所以你可以只使用你的apage所需要的模塊簡(jiǎn)而言之,Nu xt 將您從構建和優(yōu)化您的apage的工作中拯救出來(lái)Nuxt. js 具有模塊化的架構,有50多個(gè)模塊可供選擇。
  特點(diǎn):
  ·熱代碼重載;
  ·服務(wù)器端渲染或單頁(yè)應用程序或靜態(tài)生成,您選擇;
  ·使用nuxt. config . js 文件可配置;
  ·每個(gè)頁(yè)面的代碼拆分;
  ·用layouts/目錄定制布局;
  ·只加載關(guān)鍵的CSS(頁(yè)面級)。
  Nuxt成為Vue開(kāi)發(fā)不可分割的一部分,有很多貢獻者和廣泛的社區。我們會(huì )選擇這個(gè)工具的貢獻,知道社區將幫助你的技能發(fā)展,并教一些新的東西。
  12Quasar
  
  Quasar是一個(gè)通用的、Vue支持的框架,允許您使用相同的代碼庫為不同平臺編寫(xiě)應用程序:SPA、PWA、SSR應用程序、混合移動(dòng)應用程序或多平臺桌面應用程序。類(lèi)星體有多達81個(gè)組件。
  有一個(gè)好的文檔和大量的組件設計的性能和響應。Quasar在默認情況下集成了最佳實(shí)踐(HTML/ CSS / JS 縮小、緩存破壞、樹(shù)搖動(dòng)、源映射、延遲加載的代碼拆分、ES6 傳輸、代碼鏈接、可訪(fǎng)問(wèn)性),因此你可以主要關(guān)注應用的功能。它還提供了一個(gè)cli工具,用于輕松構建新項目的支架。
  該框架有一個(gè)很棒的社區,支持聊天和論壇,加上明顯的貢獻指南。此外,你可以通過(guò)捐錢(qián)來(lái)支持該工具。微信搜索公眾號:前端技術(shù)編程,回復:前端 領(lǐng)取資料 。
  13BootstrapVue
  
  引導Vue是一個(gè)基于引導庫的UI工具包。它簡(jiǎn)單地用Vue代碼替換常規引導組件中的JavaScript。使用BootstrapVue,你可以使用Vue.js和世界上最流行的前端CSS庫-Bootstrapv4在Web上構建響應性強、移動(dòng)第一和ARIA可訪(fǎng)問(wèn)的項目。它還可以輕松地與Nuxt.js集成。
  文檔是廣泛的,再加上社區的支持是強大的不和諧,使它成為一個(gè)安全的選擇,有人開(kāi)始一個(gè)項目,并作出貢獻。
  14開(kāi)發(fā)人員工具
  Statusfy
  
  Statusfy 是一個(gè)完全開(kāi)源的狀態(tài)頁(yè)面系統。Statusfy 站點(diǎn)是一個(gè)Web應用程序,創(chuàng )建于Eleventy 、Vue、Nuxt. js 和TailwindCSS 之上。 查看全部

  推薦 16 個(gè)優(yōu)秀的 Vue 開(kāi)源項目
  01CMSand Generators
  頁(yè)面工具包
  
  Pagekit 是一個(gè)開(kāi)源的CMS,在Vue. js 和Symphony框架的幫助下構建。CMS是模塊化的,所以你可以逐步擴展功能。Pagekit是在MIT許可證下發(fā)布的,因此它可以自由地修改、共享和重新發(fā)布,沒(méi)有任何限制。
  該產(chǎn)品具有CMS的所有主要和高級功能:
  ·可定制的分析儀表板與網(wǎng)站性能;
  ·網(wǎng)站內容編輯頁(yè)面;
  ·內置博客;
  ·HTML和Markdown 編輯器;
  ·文件管理器;
  ·用戶(hù)角色管理。
  還有一些東西和特點(diǎn)對開(kāi)發(fā)者特別有用。該產(chǎn)品使用簡(jiǎn)單的ORM、模塊化架構和包管理構建。還有一個(gè)內置的調試工具欄,可以幫助開(kāi)發(fā)人員監視性能、路由、數據庫查詢(xún)和調試內部系統事件、擴展甚至可以添加自己的功能。另外,也可以使用CLI執行系統更新、安裝和卸載擴展和主題,以及直接從終端清除緩存。
  該產(chǎn)品有一個(gè)強大的貢獻指南,團隊歡迎人們來(lái)修復錯誤,翻譯或擴展CMS的功能。社區沒(méi)有那么大,但非常發(fā)達,熱心幫助新人。
  因此,這是一個(gè)非常強大的產(chǎn)品,具有非常全面的文檔和透明的貢獻指南。開(kāi)啟開(kāi)源世界之路的絕佳選擇。
  02Vuepress
  
  VuePress 是一個(gè)由Vue. js 作者EvanYou 創(chuàng )建的基于Vue的靜態(tài)站點(diǎn)生成器。在VuePress 幫助下,網(wǎng)站創(chuàng )建使用VueRouter 、Vue和webpack 。最初,該產(chǎn)品是作為編寫(xiě)技術(shù)文檔的工具而創(chuàng )建的,但現在它是一個(gè)小型、緊湊、功能強大的headless CMS 。在VuePress 中你用Markdown 寫(xiě)內容,然后轉換成預渲染的靜態(tài)HTML文件。
  該項目有一個(gè)組織良好的捐款指南,工作流程透明。它還有很好的問(wèn)題管理功能。社區有超過(guò)300個(gè)活躍貢獻者,他們可以支持你。這是你開(kāi)始為開(kāi)源項目做貢獻的好選擇。
  03Vue店面
  
  Vuestorefront是一款面向電子商務(wù)的PWA,可以連接到幾乎任何電子商務(wù)后端:它使用了headless 架構。這包括流行的BigCommerce 平臺、Magento、Shopware 等。VueStorefront 的一些優(yōu)勢包括移動(dòng)優(yōu)先的方法、服務(wù)器端渲染(有利于SEO)和離線(xiàn)模式。
  該產(chǎn)品擁有一個(gè)發(fā)達的社區:Slack中約有2000名開(kāi)發(fā)者和180多名活躍貢獻者。這是特別有價(jià)值的,因為團隊有一個(gè)清晰的路線(xiàn)圖,所以你作為一個(gè)貢獻者可以選擇你可以做的任務(wù)??傊?,這是一個(gè)非常有趣的,支持和需要在上面花時(shí)間的產(chǎn)品。
  04Vuegg
  
  Vuegg 允許您將組件直接拖放到可視化編輯器中,并根據你的選擇移動(dòng)它們的大小,從而構建Vue. js 項目。這個(gè)項目的目的是合并設計和原型到一個(gè)單一的過(guò)程。
  顯著(zhù)特征:
  ·通過(guò)拖放組件和移動(dòng)/調整它們的大小來(lái)模擬/還原它們;
  ·支持標準鼠標和鍵盤(pán)組合;
  ·響應式預覽(手機、平板電腦、網(wǎng)絡(luò ));
  ·一組基本的HTML5元素;
  ·材料設計組件(vue- mdc - adapter );
  ·Vuejs 源代碼生成(download . zip )。
  這個(gè)項目有一個(gè)清晰的路線(xiàn)圖,你可以直接在Github上看到。由于該項目是相當新的,仍在進(jìn)行中的工作沒(méi)有貢獻指南,但你可以自由的打開(kāi)任何問(wèn)題和公關(guān)。
  05Gridsome
  
  Gridsome 與VuePress有許多相似之處,但它采用了一種不同的非常強大的方法來(lái)處理數據源。它允許你連接并使用應用中的許多不同類(lèi)型的數據,然后將這些數據統一到一個(gè)GraphQL 層中?;旧?,Gridsome 的前端功能用Vue,數據管理用GraphQL 。
  工作方式可以概括為以下三個(gè)步驟:
  你提供Markdown 、JSON、YAML或CVS數據格式的內容,或者從WordPress或Drupal等CMS導入內容;
  內容轉化為一個(gè)GraphQL 層,提供集中的數據管理;
  然后用這些數據用Vue構建你的應用。
  在開(kāi)發(fā)方面,文檔有一個(gè)清晰的路線(xiàn)圖、一個(gè)描述良好的更改日志和一個(gè)貢獻指南。投稿是一個(gè)不錯的選擇。
  06UI組件
  Vuetify
  
  Vuetify 根據MaterialDesign 規范提供了大量精心制作的組件(80 +)。Vueti fy 結合了Vue. js 和Material的所有優(yōu)點(diǎn)。該框架是與RTL和VueCLI - 3 兼容。Vuetify 的所有組件都有很好的記錄,也有清晰的示例。它與Vue的服務(wù)器端渲染(SSR)一起工作。Vuetify 支持所有現代網(wǎng)絡(luò )瀏覽器——甚至是IE11 和Safari9 +(使用多功能填充)。它還提供了現成的項目腳手架,這樣您就可以用一個(gè)命令開(kāi)始構建您的Vue. js 應用程序。
  它提供了一組基于材料設計的組件,例如:
  ·按鈕;
  ·投入;
  ·卡片;
  ·表,
  ·清單。
  Vuetify 背后有一個(gè)充滿(mǎn)活力的社區,有超過(guò)500個(gè)貢獻者,他們創(chuàng )建了許多Vuetify 插件。它具有成為一個(gè)好的開(kāi)源的所有主要組件:廣泛的文檔、貢獻指南、問(wèn)題管理。但在我們看來(lái),這很難做出貢獻,因為社區已經(jīng)很大了。
  07Buefy
  
  Buefy基于Bulma為Vue. js 提供了輕量級的UI組件。Buefy有兩個(gè)核心原則:讓事情簡(jiǎn)單化,輕量化。這也解釋了為什么它唯一的依賴(lài)是Vue和Bulma 。雖然它只有40多個(gè)組件,但它為你提供了隨時(shí)可用的移動(dòng)優(yōu)先和響應式的UI組件。
  特點(diǎn):
  ·支持MaterialDesign 圖標和FontAwesome ;
  ·非常輕便,除了Vue& Bu lma 之外沒(méi)有內部依賴(lài);
  ·約88KB min + gzip ;
  ·語(yǔ)義代碼輸出。
  08VueMaterial
  
  VUEMaterial簡(jiǎn)單,輕巧,完全按照GoogleMaterial Design規范建造。VUE材料提供超過(guò)56個(gè)組件來(lái)構建不同類(lèi)型的布局。一個(gè)偉大的事情是材料設計框架有真正徹底的文檔。該框架非常輕量級,包含完整的組件,完全符合GoogleMaterial Design準則。這種設計適合每一個(gè)屏幕,并支持每一個(gè)現代瀏覽器。
  路線(xiàn)圖、貢獻指南、好的文檔和更新日志都在這里。對于喜歡UI項目的開(kāi)發(fā)者來(lái)說(shuō),是一個(gè)不錯的選擇。
  09應用
  Koel
  Koel是一個(gè)個(gè)人音樂(lè )流媒體服務(wù),你可以根據你的需要定制??蛻?hù)端用Vue編寫(xiě),后端用Laravel編寫(xiě)。koel以web開(kāi)發(fā)者為目標,采用了一些更現代化的web技術(shù),比如flexbox 、音頻和拖放api等等。
  這個(gè)項目在Github上相當受歡迎,有52個(gè)貢獻者。不幸的是,沒(méi)有詳細的貢獻指南,但是作者在Github上寫(xiě)道,在你提交任何東西之前,你需要打開(kāi)一個(gè)問(wèn)題。還有一個(gè)通過(guò)Opencollective 贊助該項目的選項。
  我們喜歡這個(gè)項目背后的想法,使一個(gè)流媒體服務(wù),將由社區開(kāi)發(fā)。因此,如果你熱愛(ài)音樂(lè ),想要提高自己的Vue技能,投稿會(huì )是一個(gè)不錯的選擇。
  10Eagle.js
  
  Eagle. js 是使用Vue構建的強大、靈活、獨特的幻燈片顯示系統。它允許你在演示文稿中創(chuàng )建易于重用的組件、幻燈片和樣式。它還支持動(dòng)畫(huà),主題,和互動(dòng)小部件,這是偉大的網(wǎng)頁(yè)演示。微信搜索公眾號:Java后端編程,回復:java 領(lǐng)取資料 。
  使用這個(gè)庫可以做的最重要的事情之一是將幻燈片放在單獨的文件中,然后在其他幻燈片顯示中重用它。你還可以將特定幻燈片顯示的幻燈片導入另一個(gè)幻燈片。創(chuàng )建者還提供了幾個(gè)模板,可以輕松地開(kāi)始開(kāi)發(fā)。
  這個(gè)項目有一個(gè)貢獻指南,里面有你可以提供幫助的想法。我們認為這是一個(gè)值得花時(shí)間做的好項目:它真的幫助了很多人做演示。此外,在Eagle的幫助下,開(kāi)始學(xué)習Vue很容易。
  11工具包
  Nuxt.js
  
  Nuxt是一個(gè)用于構建通用應用程序的簡(jiǎn)單而直接的框架:服務(wù)器呈現的應用、單頁(yè)應用、漸進(jìn)式Web應用,或者只是將其用作靜態(tài)站點(diǎn)生成器。它也是模塊化的,所以你可以只使用你的apage所需要的模塊簡(jiǎn)而言之,Nu xt 將您從構建和優(yōu)化您的apage的工作中拯救出來(lái)Nuxt. js 具有模塊化的架構,有50多個(gè)模塊可供選擇。
  特點(diǎn):
  ·熱代碼重載;
  ·服務(wù)器端渲染或單頁(yè)應用程序或靜態(tài)生成,您選擇;
  ·使用nuxt. config . js 文件可配置;
  ·每個(gè)頁(yè)面的代碼拆分;
  ·用layouts/目錄定制布局;
  ·只加載關(guān)鍵的CSS(頁(yè)面級)。
  Nuxt成為Vue開(kāi)發(fā)不可分割的一部分,有很多貢獻者和廣泛的社區。我們會(huì )選擇這個(gè)工具的貢獻,知道社區將幫助你的技能發(fā)展,并教一些新的東西。
  12Quasar
  
  Quasar是一個(gè)通用的、Vue支持的框架,允許您使用相同的代碼庫為不同平臺編寫(xiě)應用程序:SPA、PWA、SSR應用程序、混合移動(dòng)應用程序或多平臺桌面應用程序。類(lèi)星體有多達81個(gè)組件。
  有一個(gè)好的文檔和大量的組件設計的性能和響應。Quasar在默認情況下集成了最佳實(shí)踐(HTML/ CSS / JS 縮小、緩存破壞、樹(shù)搖動(dòng)、源映射、延遲加載的代碼拆分、ES6 傳輸、代碼鏈接、可訪(fǎng)問(wèn)性),因此你可以主要關(guān)注應用的功能。它還提供了一個(gè)cli工具,用于輕松構建新項目的支架。
  該框架有一個(gè)很棒的社區,支持聊天和論壇,加上明顯的貢獻指南。此外,你可以通過(guò)捐錢(qián)來(lái)支持該工具。微信搜索公眾號:前端技術(shù)編程,回復:前端 領(lǐng)取資料 。
  13BootstrapVue
  
  引導Vue是一個(gè)基于引導庫的UI工具包。它簡(jiǎn)單地用Vue代碼替換常規引導組件中的JavaScript。使用BootstrapVue,你可以使用Vue.js和世界上最流行的前端CSS庫-Bootstrapv4在Web上構建響應性強、移動(dòng)第一和ARIA可訪(fǎng)問(wèn)的項目。它還可以輕松地與Nuxt.js集成。
  文檔是廣泛的,再加上社區的支持是強大的不和諧,使它成為一個(gè)安全的選擇,有人開(kāi)始一個(gè)項目,并作出貢獻。
  14開(kāi)發(fā)人員工具
  Statusfy
  
  Statusfy 是一個(gè)完全開(kāi)源的狀態(tài)頁(yè)面系統。Statusfy 站點(diǎn)是一個(gè)Web應用程序,創(chuàng )建于Eleventy 、Vue、Nuxt. js 和TailwindCSS 之上。

2017年,你需要學(xué)習的JavaScript框架和主題

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 126 次瀏覽 ? 2022-05-13 07:57 ? 來(lái)自相關(guān)話(huà)題

  2017年,你需要學(xué)習的JavaScript框架和主題
  點(diǎn)擊關(guān)注▲一燈科技
  知識|經(jīng)驗|資訊|資料四大版塊
  中國專(zhuān)業(yè)的Web前端高端培訓機構
  
  原文:#.wjdqwi2hr
  
  隨著(zhù)JavaScript的普及,應運而生了一個(gè)非?;钴S的集技術(shù),框架和庫為一體的生態(tài)圈。由于這個(gè)充滿(mǎn)多樣性的和活力的生態(tài)圈,因此大家非常困惑。應該學(xué)習哪種技術(shù)?
  你應該投資哪一種技術(shù)才能獲得最大的收益?公司現在最需要招的人最需要哪一種技術(shù)堆棧?哪一個(gè)發(fā)展空間最大?
  現在最需要了解的是哪個(gè)技術(shù)?這篇文章高度概括了你所需要了解的內容,同時(shí)附上了鏈接,你可以自行了解。
  記住,當你正在實(shí)驗一些新的代碼,你可以在Codepen.io上玩玩,如果你在學(xué)習ES6,那么你可以看看如何使用Babel REPL編譯。
  這個(gè)學(xué)習的列表很長(cháng),但是你不用感到灰心。你可以做到的!如果你在研究這列表,擔憂(yōu)該如何學(xué)習這一切,如何創(chuàng )建現代APP,移步閱讀“為什么我該感謝JavaScript疲勞”。然后開(kāi)始認真學(xué)習,動(dòng)起來(lái)。
  選擇性學(xué)習的一個(gè)注意事項
  有些內容是完全可選的,也就是說(shuō),如果你對我推薦東西此感興趣,或者工作需要,但是你不能感覺(jué)是被迫學(xué)的。每一個(gè)打了星號(*)的(比如example*)就是可選的。
  沒(méi)有打*的,都是必須學(xué)的,但是并不是所有的都是一定要學(xué)透的,你需要熟悉每一樣內容。你需要了解可選的內容,但是你完全沒(méi)有必要精通所有的。
  JavaScript & DOM 基礎
  在你找到JavaScript的工作之前,你需要掌握JavaScript的基礎:
  工具React
  React是一個(gè)由Facebook創(chuàng )建的用于構建用戶(hù)接口的JavaScript庫。 這是一個(gè)基于單向數據流的概念,意味著(zhù)對于每次周期更新:
  React將輸入變成組件作為props,然后如果特定的Dom部分的數據發(fā)生了改變,那么就會(huì )只重新渲染滿(mǎn)足條件的部分。在這個(gè)階段更新的數據,直到下一次渲染階段都不能重新觸發(fā)渲染。
  事件處理階段 — DOM渲染之后,React監聽(tīng)事件, 將事件委托到DOM樹(shù)的根節點(diǎn)上的一個(gè)單獨監聽(tīng)器 (為了更好的性能)。 你可以監聽(tīng)這些事件并響應更新數據。
  數據的任何改變,步驟重新從第一步開(kāi)始。
  這和雙向綁定形成了對比,雙向綁定是DOM的改變會(huì )改變數據(比如,Angular 1 和Knockout)。使用雙向綁定,當DOM渲染的時(shí)候(在A(yíng)ngular 1中稱(chēng)之為digest cycle),DOM的改變可能會(huì )在渲染完成前重新觸發(fā)渲染階段,導致重新載入DOM和重繪——降低了性能。
  React沒(méi)有規定一個(gè)數據管理系統, 但是Flux-based方法是推薦的。 React的單向數據流方法,借鑒了函數編程和不可變的數據結構,改變了我們眼中的前端框架架構。
  想了解更多關(guān)于React和Flux架構, 請閱讀“學(xué)習編程最好的方法就是開(kāi)始編程: 從創(chuàng )建App中學(xué)習App架構”.
  Redux
  Redux給你的APP提供了事務(wù)處理的(transactional), 確定性(deterministic)狀態(tài)管理。在Redux中,我們通過(guò)迭代大量的操作對象,以減少當前應用程序狀態(tài)。想知道為什么這個(gè)很重要, 更多請看“給更好的Redux架構的10個(gè)建議.”。想要開(kāi)始使用Redux, 學(xué)習Redux的創(chuàng )建者Dan Abramov的極佳教程:
  Redux對于生產(chǎn)項目是強制學(xué)習的,即使你從未用過(guò)Redux。
  為什么?因為它給了你大量的練習,教會(huì )你純函數的價(jià)值,以及教會(huì )你新的思考reducers的方式, 這是迭代數據集和從中獲取數據的通用的函數。 reducers 如此實(shí)用,以至于A(yíng)rray.prototype.reduce都被加入了JS規范。
  Reducer不僅僅對于組數(array)是重要的,并且學(xué)習用Reducer的新方式處理問(wèn)題,本身就十分有價(jià)值。
  Angular 2*
  Angular 2是繼來(lái)自谷歌的廣受歡迎的Angular之后的框架。因為這太受歡迎了, 這會(huì )讓你的簡(jiǎn)歷看上去十分高大上——不過(guò)我建議還是先學(xué)React。
  與Angular 2相比,我更愛(ài)React,因為:
  這個(gè)更簡(jiǎn)單, 以及……
  這十分受歡迎,并且有許多相關(guān)職位 (當然 Angular 2也是的)
  因為這個(gè)原因,我推薦學(xué)習React, 但是我認為 Angular 2完全是可選的*。 如果你非常喜歡Angular 2, 那么就換過(guò)來(lái). 先學(xué)Angular 2,將React列為可選。 每一個(gè)對你的簡(jiǎn)歷來(lái)說(shuō)都是受益匪淺的。
  無(wú)論你選哪一個(gè),試著(zhù)集中精力學(xué)習至少半年到一年,之后再去學(xué)習另一個(gè)。這需要時(shí)間,你才能真正熟練掌握。
  RxJS*
  RxJS是JavaScript的一些響應式編程工具??梢援斪鱈odash中的流。響應式編程已經(jīng)正式登陸JavaScript的舞臺。ECMAScript的Observables提案是階段一的初稿, 而RxJS 5+是Observables權威標準的實(shí)現。
  盡管我非常愛(ài)RxJS, 但是如果你一次性加載所有的包你的包會(huì )膨脹地很厲害(這里有許多操作)。為了控制包的大小, 不要加載所有的內容。請使用補丁加載:
  使用補丁加載能夠將你的包對于rxjs依賴(lài)減少大約200k。這真的非常劃算。這會(huì )讓你的app變得更快。
  EDIT: 為什么你不列出 ?
  許多人問(wèn)我,為何不列出他們喜歡的框架。我評判框架的其中一個(gè)標準就是“這真的會(huì )在工作上用到?”。
  是的,有一個(gè)框架的人氣投票。但是當你決定耗費時(shí)間專(zhuān)注學(xué)習一個(gè)框架,這是否會(huì )脫穎而出是個(gè)非常重要的考慮因素。
  為了回答這個(gè)問(wèn)題,我看了一些關(guān)鍵指標。首先,谷歌趨勢(Google Trends)。如果你想要重現這個(gè)谷歌趨勢圖表,記得要選擇主題(topic),而不是關(guān)鍵字(keyword),因為這些詞會(huì )過(guò)濾掉許多錯誤信息。換句話(huà)說(shuō),這些是主題趨勢,而不是關(guān)鍵字搜索。
  
  谷歌趨勢上的JS主題
  這個(gè)告訴我們在不同項目中的相對興趣。如果人們搜索他們,那么很有可能在探索他們的選擇,或者查找幫助或文檔。這是相對使用水平的一個(gè)非常不錯的指標。
  另一個(gè)數據的有效來(lái)源是,這個(gè)集合了來(lái)自大量不同渠道的職位表數據。職位投遞熱點(diǎn)最近急速下降,但是他們依然收集足夠的數據,來(lái)做有效的相對對比,從而告訴你在生產(chǎn)項目中人們真正使用的框架。從職位中:
  
  想要重現這些發(fā)現,搜索javascript,然后工作地點(diǎn)保持空白。你就可以清晰看到:
  Angular和React占領(lǐng)絕對優(yōu)勢:沒(méi)有可以與之相提并論的。(除了 在網(wǎng)站中具有巨大份額的jQuery——不包括app——因為它用于所有的遺留系統,包括受歡迎的CMS系統,比如WordPress)。
  在這些列表中,與React相比,Angular具有絕對優(yōu)勢。那么為什么我推薦先學(xué)React? 因為:
  越來(lái)越多的人開(kāi)始學(xué)React,而不是Angular。
  在用戶(hù)體驗上,React領(lǐng)先Angular。
  換句話(huà)說(shuō),React贏(yíng)得了思維占有率和用戶(hù)滿(mǎn)意度的競爭,并且如果按照過(guò)去幾年的趨勢,只需要按照一半的程度繼續下去,React完全有可能超越Angular作為主要的前端框架。
  Angular 2也有可能扭轉戰局,,因此Angular也有可能東山再起,但是到目前為止, React確實(shí)打了一場(chǎng)漂亮的仗.
  觀(guān)察中的框架下一步
  現在你已經(jīng)研究了所有的熱點(diǎn)技術(shù)
  提升你的JavaScript游戲。如果你不是其中一員,你會(huì )錯過(guò)的。
  
  快掃描二維碼,與志佳老師來(lái)聊聊吧~~
   查看全部

  2017年,你需要學(xué)習的JavaScript框架和主題
  點(diǎn)擊關(guān)注▲一燈科技
  知識|經(jīng)驗|資訊|資料四大版塊
  中國專(zhuān)業(yè)的Web前端高端培訓機構
  
  原文:#.wjdqwi2hr
  
  隨著(zhù)JavaScript的普及,應運而生了一個(gè)非?;钴S的集技術(shù),框架和庫為一體的生態(tài)圈。由于這個(gè)充滿(mǎn)多樣性的和活力的生態(tài)圈,因此大家非常困惑。應該學(xué)習哪種技術(shù)?
  你應該投資哪一種技術(shù)才能獲得最大的收益?公司現在最需要招的人最需要哪一種技術(shù)堆棧?哪一個(gè)發(fā)展空間最大?
  現在最需要了解的是哪個(gè)技術(shù)?這篇文章高度概括了你所需要了解的內容,同時(shí)附上了鏈接,你可以自行了解。
  記住,當你正在實(shí)驗一些新的代碼,你可以在Codepen.io上玩玩,如果你在學(xué)習ES6,那么你可以看看如何使用Babel REPL編譯。
  這個(gè)學(xué)習的列表很長(cháng),但是你不用感到灰心。你可以做到的!如果你在研究這列表,擔憂(yōu)該如何學(xué)習這一切,如何創(chuàng )建現代APP,移步閱讀“為什么我該感謝JavaScript疲勞”。然后開(kāi)始認真學(xué)習,動(dòng)起來(lái)。
  選擇性學(xué)習的一個(gè)注意事項
  有些內容是完全可選的,也就是說(shuō),如果你對我推薦東西此感興趣,或者工作需要,但是你不能感覺(jué)是被迫學(xué)的。每一個(gè)打了星號(*)的(比如example*)就是可選的。
  沒(méi)有打*的,都是必須學(xué)的,但是并不是所有的都是一定要學(xué)透的,你需要熟悉每一樣內容。你需要了解可選的內容,但是你完全沒(méi)有必要精通所有的。
  JavaScript & DOM 基礎
  在你找到JavaScript的工作之前,你需要掌握JavaScript的基礎:
  工具React
  React是一個(gè)由Facebook創(chuàng )建的用于構建用戶(hù)接口的JavaScript庫。 這是一個(gè)基于單向數據流的概念,意味著(zhù)對于每次周期更新:
  React將輸入變成組件作為props,然后如果特定的Dom部分的數據發(fā)生了改變,那么就會(huì )只重新渲染滿(mǎn)足條件的部分。在這個(gè)階段更新的數據,直到下一次渲染階段都不能重新觸發(fā)渲染。
  事件處理階段 — DOM渲染之后,React監聽(tīng)事件, 將事件委托到DOM樹(shù)的根節點(diǎn)上的一個(gè)單獨監聽(tīng)器 (為了更好的性能)。 你可以監聽(tīng)這些事件并響應更新數據。
  數據的任何改變,步驟重新從第一步開(kāi)始。
  這和雙向綁定形成了對比,雙向綁定是DOM的改變會(huì )改變數據(比如,Angular 1 和Knockout)。使用雙向綁定,當DOM渲染的時(shí)候(在A(yíng)ngular 1中稱(chēng)之為digest cycle),DOM的改變可能會(huì )在渲染完成前重新觸發(fā)渲染階段,導致重新載入DOM和重繪——降低了性能。
  React沒(méi)有規定一個(gè)數據管理系統, 但是Flux-based方法是推薦的。 React的單向數據流方法,借鑒了函數編程和不可變的數據結構,改變了我們眼中的前端框架架構。
  想了解更多關(guān)于React和Flux架構, 請閱讀“學(xué)習編程最好的方法就是開(kāi)始編程: 從創(chuàng )建App中學(xué)習App架構”.
  Redux
  Redux給你的APP提供了事務(wù)處理的(transactional), 確定性(deterministic)狀態(tài)管理。在Redux中,我們通過(guò)迭代大量的操作對象,以減少當前應用程序狀態(tài)。想知道為什么這個(gè)很重要, 更多請看“給更好的Redux架構的10個(gè)建議.”。想要開(kāi)始使用Redux, 學(xué)習Redux的創(chuàng )建者Dan Abramov的極佳教程:
  Redux對于生產(chǎn)項目是強制學(xué)習的,即使你從未用過(guò)Redux。
  為什么?因為它給了你大量的練習,教會(huì )你純函數的價(jià)值,以及教會(huì )你新的思考reducers的方式, 這是迭代數據集和從中獲取數據的通用的函數。 reducers 如此實(shí)用,以至于A(yíng)rray.prototype.reduce都被加入了JS規范。
  Reducer不僅僅對于組數(array)是重要的,并且學(xué)習用Reducer的新方式處理問(wèn)題,本身就十分有價(jià)值。
  Angular 2*
  Angular 2是繼來(lái)自谷歌的廣受歡迎的Angular之后的框架。因為這太受歡迎了, 這會(huì )讓你的簡(jiǎn)歷看上去十分高大上——不過(guò)我建議還是先學(xué)React。
  與Angular 2相比,我更愛(ài)React,因為:
  這個(gè)更簡(jiǎn)單, 以及……
  這十分受歡迎,并且有許多相關(guān)職位 (當然 Angular 2也是的)
  因為這個(gè)原因,我推薦學(xué)習React, 但是我認為 Angular 2完全是可選的*。 如果你非常喜歡Angular 2, 那么就換過(guò)來(lái). 先學(xué)Angular 2,將React列為可選。 每一個(gè)對你的簡(jiǎn)歷來(lái)說(shuō)都是受益匪淺的。
  無(wú)論你選哪一個(gè),試著(zhù)集中精力學(xué)習至少半年到一年,之后再去學(xué)習另一個(gè)。這需要時(shí)間,你才能真正熟練掌握。
  RxJS*
  RxJS是JavaScript的一些響應式編程工具??梢援斪鱈odash中的流。響應式編程已經(jīng)正式登陸JavaScript的舞臺。ECMAScript的Observables提案是階段一的初稿, 而RxJS 5+是Observables權威標準的實(shí)現。
  盡管我非常愛(ài)RxJS, 但是如果你一次性加載所有的包你的包會(huì )膨脹地很厲害(這里有許多操作)。為了控制包的大小, 不要加載所有的內容。請使用補丁加載:
  使用補丁加載能夠將你的包對于rxjs依賴(lài)減少大約200k。這真的非常劃算。這會(huì )讓你的app變得更快。
  EDIT: 為什么你不列出 ?
  許多人問(wèn)我,為何不列出他們喜歡的框架。我評判框架的其中一個(gè)標準就是“這真的會(huì )在工作上用到?”。
  是的,有一個(gè)框架的人氣投票。但是當你決定耗費時(shí)間專(zhuān)注學(xué)習一個(gè)框架,這是否會(huì )脫穎而出是個(gè)非常重要的考慮因素。
  為了回答這個(gè)問(wèn)題,我看了一些關(guān)鍵指標。首先,谷歌趨勢(Google Trends)。如果你想要重現這個(gè)谷歌趨勢圖表,記得要選擇主題(topic),而不是關(guān)鍵字(keyword),因為這些詞會(huì )過(guò)濾掉許多錯誤信息。換句話(huà)說(shuō),這些是主題趨勢,而不是關(guān)鍵字搜索。
  
  谷歌趨勢上的JS主題
  這個(gè)告訴我們在不同項目中的相對興趣。如果人們搜索他們,那么很有可能在探索他們的選擇,或者查找幫助或文檔。這是相對使用水平的一個(gè)非常不錯的指標。
  另一個(gè)數據的有效來(lái)源是,這個(gè)集合了來(lái)自大量不同渠道的職位表數據。職位投遞熱點(diǎn)最近急速下降,但是他們依然收集足夠的數據,來(lái)做有效的相對對比,從而告訴你在生產(chǎn)項目中人們真正使用的框架。從職位中:
  
  想要重現這些發(fā)現,搜索javascript,然后工作地點(diǎn)保持空白。你就可以清晰看到:
  Angular和React占領(lǐng)絕對優(yōu)勢:沒(méi)有可以與之相提并論的。(除了 在網(wǎng)站中具有巨大份額的jQuery——不包括app——因為它用于所有的遺留系統,包括受歡迎的CMS系統,比如WordPress)。
  在這些列表中,與React相比,Angular具有絕對優(yōu)勢。那么為什么我推薦先學(xué)React? 因為:
  越來(lái)越多的人開(kāi)始學(xué)React,而不是Angular。
  在用戶(hù)體驗上,React領(lǐng)先Angular。
  換句話(huà)說(shuō),React贏(yíng)得了思維占有率和用戶(hù)滿(mǎn)意度的競爭,并且如果按照過(guò)去幾年的趨勢,只需要按照一半的程度繼續下去,React完全有可能超越Angular作為主要的前端框架。
  Angular 2也有可能扭轉戰局,,因此Angular也有可能東山再起,但是到目前為止, React確實(shí)打了一場(chǎng)漂亮的仗.
  觀(guān)察中的框架下一步
  現在你已經(jīng)研究了所有的熱點(diǎn)技術(shù)
  提升你的JavaScript游戲。如果你不是其中一員,你會(huì )錯過(guò)的。
  
  快掃描二維碼,與志佳老師來(lái)聊聊吧~~
  

體驗用VS Code 里 EIDE 進(jìn)行芯片開(kāi)發(fā)的快樂(lè )~ 開(kāi)源、免費、更簡(jiǎn)便、支

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 350 次瀏覽 ? 2022-05-01 16:09 ? 來(lái)自相關(guān)話(huà)題

  體驗用VS Code 里 EIDE 進(jìn)行芯片開(kāi)發(fā)的快樂(lè )~ 開(kāi)源、免費、更簡(jiǎn)便、支
  
  出品 21ic論壇yang377156216
  網(wǎng)站:
  整體概覽
  作為 ARM Cotex M 系列內核的 32 位單片機開(kāi)發(fā)者,在平時(shí)工作中經(jīng)常會(huì )因為芯片平臺的不同而去切換各種開(kāi)發(fā)環(huán)境,幸好市面上有著(zhù)各式各樣的工具能夠滿(mǎn)足開(kāi)發(fā)攻城獅們的需求,大體上這些開(kāi)發(fā)環(huán)境可以分為幾大類(lèi):較為通用的集成環(huán)境(編輯、編譯、鏈接、下載和調試等功能合為一體),比較有代表性的有 Keil MDK、IAR EWARM、SEGGER Embedded Studio 、Mbed Studio 等等;廠(chǎng)家自制的專(zhuān)用 IDE ,主流的代表作有 STM32CubeIDE 、MCUXpresso IDE 、RT-Thread Studio 、MPLAB IDE 等等;還有一種 ”混搭版“ 的風(fēng)格,開(kāi)發(fā)者可以在 Eclipse 、VS Code 、Visual Studio 等工具中搭配 ARM GCC 編譯工具鏈進(jìn)行項目軟件開(kāi)發(fā)。在眼花繚亂的工具中,根據是否免費、編輯功能體驗度是否高、上手與熟悉難度是否適宜等因素綜合考慮,今天選擇了一種開(kāi)源、免費且更加簡(jiǎn)便的 VS Code +EIDE + GCC + J-Link 方式進(jìn)行 MM32F0144C6P 芯片的軟件開(kāi)發(fā)。接下來(lái)的內容整體可分為以下幾點(diǎn):
  一、單片機軟件開(kāi)發(fā)流程和其中一些知識點(diǎn)
  一個(gè) ARM Cortex M 系列內核的 MCU 軟件開(kāi)發(fā)者需要清楚完成一個(gè)軟件項目的大致流程是需經(jīng)過(guò)以下幾步的:
  編寫(xiě)代碼。通常是 C/C++ 語(yǔ)言,但是在考究執行效率的時(shí)候就得用到 ASM 匯編,講究面向對象的結構化編程時(shí)甚至用上 Python、Lua 等其它高級語(yǔ)言。
  將各種語(yǔ)言進(jìn)行編譯和鏈接最終生成機器二進(jìn)制文件。相信絕大部分人都親身體驗過(guò)這一步,在很多集成環(huán)境中就是一鍵 Build ,然后默認生成 hex 格式燒錄文件。
  燒錄和調試。一般燒錄方式分為 ISP 、ICP 和 IAP ,根據 MCU 的不同選擇的燒錄工具也不盡相同。有些廠(chǎng)商,例如國產(chǎn)的 STC,只支持串口方式的 ISP ,且配套的在線(xiàn)仿真調試器也是基于串口形式的;而 ARM 內核的大部分 MCU 都支持 JTAG/SWD 接口形式的 ICP 方式,配套的調試工具可以是 J-Link、U-Link、CMSIS DAP-Link 和 ST-Link 等等,也幾乎都有配套的上位機給予支持。
  運行程序?;窘?jīng)過(guò)一番調試后,最終能夠得到滿(mǎn)足功能需求的代碼了,此時(shí)終于可以結案交付了,當然,后面可能還會(huì )面對大大小小的 Bug ,還得繼續 “升級打怪”。
  
  以上內容簡(jiǎn)述了整個(gè)軟件開(kāi)發(fā)的流程,其中涉及到的編譯和鏈接這個(gè)知識點(diǎn)比較重要。為了對這些名詞有更深的理解,特意查了資料。通俗講,編譯器會(huì )將 C 程序轉換成一種機器能理解的符號形式的匯編語(yǔ)言程序,包括了各種偽指令和符號表,然后匯編器將這些代碼轉換成目標文件,包括了機器語(yǔ)言指令、數據和指令正確放入內存所需要的信息,最后由系統程序(鏈接編譯器) 將各個(gè)獨立匯編的機器語(yǔ)言程序組合起來(lái)并且解釋所有未定義的標記,直到生成可執行文件。這其中也會(huì )涉及到很多文件,比如后綴名為 .c / .s / .o / .a / .lib / .elf / .axf / .bin / .hex 等等文件,有些是中間文件,另外一些是結果可執行文件。以下這幅圖用于幫助理解這個(gè)過(guò)程:
  
  既然編譯鏈接這個(gè)過(guò)程有著(zhù)舉足輕重的地位,那市面上的又有哪些主流工具可供選擇呢?據了解,目前針對于 ARM平臺的主流編譯器主要有以下一些:
  
  用到比較多的 KEIL AC5/AC6 是閉源和收費的,編譯速度在大型項目上 AC6 非常有優(yōu)勢,它們都具備多種優(yōu)化等級可調,編出來(lái)的代碼大小較小且運行更為安全,另外也都可以在 ARM 官網(wǎng)單獨下載,比較適合用于產(chǎn)品開(kāi)發(fā)中;IAR 的 ICC 編譯器也更加高性能而被廣泛使用,在很多 benchmark 跑分測試中同顆芯片的運行結果效率都更高些,且編出來(lái)的代碼大小也適中;Keil MDK、IAR 等工具都是收費的,在使用中很可能牽扯到一定的版權問(wèn)題,而 GCC(GNU Compiler Collection)作為GNU計劃的一部分,**是完全免費的,這就是最大的優(yōu)勢**,盡管使用 GCC 是需要付出一定代價(jià)的——對編譯后造成的不良后果負全責(比如編譯出來(lái)的代碼量非常大,程序跑飛從而致使板級器件燒毀,系統死機崩潰導致丟失關(guān)鍵數據之類(lèi)的情況)。
  這里特別感謝硬漢大哥和傻孩子大哥針對各家編譯器做出的實(shí)測比較和探討,可參見(jiàn):
  二、VS Code 優(yōu)勢和 EIDE 插件介紹
  這里選擇 ARM GCC 交叉編譯工具鏈作為最重要的一環(huán),除了看重它開(kāi)源、免費、資料多等優(yōu)勢以外,更重要的是可以跨平臺。除了“內核”,那再來(lái)聊聊為什么選擇 VS Code 作為外殼吧。
  考慮 Windows 環(huán)境下能夠使用 Eclipse IDE for C/C++ Developers 來(lái)搭建 ARM 開(kāi)發(fā)環(huán)境,但是整個(gè) JAVA 環(huán)境占用了太大的 PC 資源,完整地安裝下來(lái)會(huì )非常臃腫,性?xún)r(jià)比不高,所以轉而會(huì )考慮一個(gè)跨平臺且非常流行的編輯器 VS Code ,其特點(diǎn)有:
  等等……
  好的開(kāi)發(fā)環(huán)境就像一把好刀,能讓我們開(kāi)發(fā)速度達到事半功倍,主流的就是對的,下圖顯示了 VS Code 的受歡迎程度:
  
  VS Code 里面的 EIDE 插件是個(gè)什么東西?很多人可能沒(méi)有接觸過(guò),不知道它能讓 KEIL 工程導入到 VS Code 中有多方便。下面來(lái)簡(jiǎn)單介紹。
  EIDE是 keil-assistant 插件的升級版,它們同屬一個(gè)開(kāi)發(fā)團隊,這是一款適用于 8051/STM8/Cortex-M/RISC-V 的單片機開(kāi)發(fā)環(huán)境。能夠在 VS Code 上提供 8051, STM8, Cortex-M, RISC-V 項目的開(kāi)發(fā), 編譯, 燒錄功能。通俗點(diǎn)說(shuō),它就是那個(gè)披上 VS Code 外衣然后可以將 GCC 工具、各種調試工具集大成的 “后來(lái)者”,有多種實(shí)用功能,能讓開(kāi)發(fā)工作變得更加簡(jiǎn)單高效。更多相關(guān)資源可以查看官方提供的文檔:#/ 。
  三、準備資源
  硬件資源如下:
  
  軟件資源如下:
  提示:本文中的展示基于 WIN10 64 位 PC 系統,用戶(hù)需要根據自己的電腦系統下載對應版本的資源。既可通過(guò)上述超鏈接獲取,也可直接使用壓縮包內的,為更好對照文中步驟實(shí)現環(huán)境搭建,建議盡量使用附件提供的資源包。工具軟件的安裝可以根據自己的習慣自定義路徑,也可以一直 next 選擇默認模式,記得將 gcc-arm-none-eabi 工具安裝路徑加入系統環(huán)境變量中,保險起見(jiàn)其它幾個(gè)也可以一并添加。
  
  由于官方不提供 MM32F0144C6P GCC 啟動(dòng)文件對應的鏈接文件,那自己動(dòng)手制作,思路是找到 STM32F030x 相關(guān)的文件來(lái)做修改,因為它們兩者外設資源上極為相似。要注意的是,需要根據 MM32F0144C6P 實(shí)際的中斷向量表去做修改。以下為修改好的 startup_mm32f0140_gcc.s 文件:
  /**<br />??******************************************************************************<br />??* @file? ?? ?startup_mm32f0140_gcc.s<br />??* @author? ? <br />??* @brief? ???MM32F014x devices vector table for GCC toolchain.<br />??*? ?? ?? ?? ?This module performs:<br />??*? ?? ?? ?? ?? ? - Set the initial SP<br />??*? ?? ?? ?? ?? ? - Set the initial PC == Reset_Handler,<br />??*? ?? ?? ?? ?? ? - Set the vector table entries with the exceptions ISR address<br />??*? ?? ?? ?? ?? ? - Branches to main in the C library (which eventually<br />??*? ?? ?? ?? ?? ?? ?calls main()).<br />??*? ?? ?? ?? ?After Reset the Cortex-M0 processor is in Thread mode,<br />??*? ?? ?? ?? ?priority is Privileged, and the Stack is set to Main.<br />??*<br />??******************************************************************************<br />??*/<br /><br /><br />??.syntax unified<br />??.cpu cortex-m0<br />??.fpu softvfp<br />??.thumb<br /><br /><br />.global g_pfnVectors<br />.global Default_Handler<br /><br /><br />/* start address for the initialization values of the .data section.<br />defined in linker script */<br />.word _sidata<br />/* start address for the .data section. defined in linker script */<br />.word _sdata<br />/* end address for the .data section. defined in linker script */<br />.word _edata<br />/* start address for the .bss section. defined in linker script */<br />.word _sbss<br />/* end address for the .bss section. defined in linker script */<br />.word _ebss<br /><br /><br />/**<br /> * @brief??This is the code that gets called when the processor first<br /> *? ?? ?? ? starts execution following a reset event. Only the absolutely<br /> *? ?? ?? ? necessary set is performed, after which the application<br /> *? ?? ?? ? supplied main() routine is called.<br /> * @param??None<br /> * @retval : None<br />*/<br /><br /><br />??.section .text.Reset_Handler<br />??.weak Reset_Handler<br />??.type Reset_Handler, %function<br />Reset_Handler:<br />??ldr? ?r0, =_estack<br />??mov? ?sp, r0? ?? ?? ? /* set stack pointer */<br /><br /><br />/* Copy the data segment initializers from flash to SRAM */<br />??ldr r0, =_sdata<br />??ldr r1, =_edata<br />??ldr r2, =_sidata<br />??movs r3, #0<br />??b LoopCopyDataInit<br /><br /><br />CopyDataInit:<br />??ldr r4, [r2, r3]<br />??str r4, [r0, r3]<br />??adds r3, r3, #4<br /><br /><br />LoopCopyDataInit:<br />??adds r4, r0, r3<br />??cmp r4, r1<br />??bcc CopyDataInit<br />??<br />/* Zero fill the bss segment. */<br />??ldr r2, =_sbss<br />??ldr r4, =_ebss<br />??movs r3, #0<br />??b LoopFillZerobss<br /><br /><br />FillZerobss:<br />??str??r3, [r2]<br />??adds r2, r2, #4<br /><br /><br />LoopFillZerobss:<br />??cmp r2, r4<br />??bcc FillZerobss<br /><br /><br />/* Call the clock system intitialization function.*/<br />??bl??SystemInit<br />/* Call static constructors */<br />??bl __libc_init_array<br />/* Call the application's entry point.*/<br />??bl main<br /><br /><br />LoopForever:<br />? ? b LoopForever<br /><br /><br /><br /><br />.size Reset_Handler, .-Reset_Handler<br /><br /><br />/**<br /> * @brief??This is the code that gets called when the processor receives an<br /> *? ?? ?? ?unexpected interrupt.??This simply enters an infinite loop, preserving<br /> *? ?? ?? ?the system state for examination by a debugger.<br /> *<br /> * @param??None<br /> * @retval : None<br />*/<br />? ? .section .text.Default_Handler,"ax",%progbits<br />Default_Handler:<br />Infinite_Loop:<br />??b Infinite_Loop<br />??.size Default_Handler, .-Default_Handler<br />/******************************************************************************<br />** The minimal vector table for a Cortex M0.??Note that the proper constructs<br />* must be placed on this to ensure that it ends up at physical address<br />* 0x0000.0000.<br />*******************************************************************************/<br />? ?.section .isr_vector,"a",%progbits<br />??.type g_pfnVectors, %object<br />??.size g_pfnVectors, .-g_pfnVectors<br /><br /><br /><br /><br />g_pfnVectors:<br />??.word??_estack<br />??.word??Reset_Handler<br />??.word??NMI_Handler<br />??.word??HardFault_Handler<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??SVC_Handler<br />??.word??0<br />??.word??0<br />??.word??PendSV_Handler<br />??.word??SysTick_Handler<br />??.word??WWDG_IRQHandler? ?? ?? ?? ?? ?? ? /* Window WatchDog? ?? ?? ?? ???*/<br />??.word??PVD_IRQHandler? ?? ?? ?? ?? ?? ???/* PVD through EXTI Line detect */<br />??.word??MIPI_IRQHandler? ?? ?? ?? ?? ?? ? /* MIPI? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??FLASH_IRQHandler? ?? ?? ?? ?? ?? ?/* FLASH? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??RCC_IRQHandler? ?? ?? ?? ?? ?? ???/* RCC? ?? ?? ?? ?? ?? ?? ?? ???*/<br />??.word??EXTI0_1_IRQHandler? ?? ?? ?? ?? ? /* EXTI Line 0 and 1? ?? ?? ?? ?*/<br />??.word??EXTI2_3_IRQHandler? ?? ?? ?? ?? ? /* EXTI Line 2 and 3? ?? ?? ?? ?*/<br />??.word??EXTI4_15_IRQHandler? ?? ?? ?? ?? ?/* EXTI Line 4 to 15? ?? ?? ?? ?*/<br />??.word??HWDIV_IRQHandler? ?? ?? ?? ?? ?? ?/* HWDIV? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??DMA1_Channel1_IRQHandler? ?? ?? ? /* DMA1 Channel 1? ?? ?? ?? ?? ?*/<br />??.word??DMA1_Channel2_3_IRQHandler? ?? ???/* DMA1 Channel 2 and Channel 3 */<br />??.word??DMA1_Channel4_5_IRQHandler? ?? ???/* DMA1 Channel 4 and Channel 5 */<br />??.word??ADC1_COMP_IRQHandler? ?? ?? ?? ???/* ADC1 & COMP? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM1_BRK_UP_TRG_COM_IRQHandler? ? /* TIM1 Break, Update, Trigger and Commutation */<br />??.word??TIM1_CC_IRQHandler? ?? ?? ?? ?? ? /* TIM1 Capture Compare? ?? ?? ?*/<br />??.word??TIM2_IRQHandler? ?? ?? ?? ?? ?? ? /* TIM2? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??TIM3_IRQHandler? ?? ?? ?? ?? ?? ? /* TIM3? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM14_IRQHandler? ?? ?? ?? ?? ?? ?/* TIM14? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM16_IRQHandler? ?? ?? ?? ?? ?? ?/* TIM16? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM17_IRQHandler? ?? ?? ?? ?? ?? ?/* TIM17? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??I2C1_IRQHandler? ?? ?? ?? ?? ?? ? /* I2C1? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??SPI1_IRQHandler? ?? ?? ?? ?? ?? ? /* SPI1? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??SPI2_IRQHandler? ?? ?? ?? ?? ?? ? /* SPI2? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??UART1_IRQHandler? ?? ?? ?? ?? ?? ?/* UART1? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??UART2_IRQHandler? ?? ?? ?? ?? ?? ?/* UART2? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??UART3_IRQHandler? ?? ?? ?? ?? ?? ?/* UART3? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??FLEX_CAN_IRQHandler? ?? ?? ?? ?? ?/* FLEX_CAN? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br /><br /><br /><br /><br />/*******************************************************************************<br />** Provide weak aliases for each Exception handler to the Default_Handler.<br />* As they are weak aliases, any function with the same name will override<br />* this definition.<br />********************************************************************************/<br /><br /><br />??.weak? ?? ?NMI_Handler<br />??.thumb_set NMI_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?HardFault_Handler<br />??.thumb_set HardFault_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?SVC_Handler<br />??.thumb_set SVC_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?PendSV_Handler<br />??.thumb_set PendSV_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?SysTick_Handler<br />??.thumb_set SysTick_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?WWDG_IRQHandler<br />??.thumb_set WWDG_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?PVD_IRQHandler<br />??.thumb_set PVD_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?MIPI_IRQHandler<br />??.thumb_set MIPI_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?FLASH_IRQHandler<br />??.thumb_set FLASH_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?RCC_IRQHandler<br />??.thumb_set RCC_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?EXTI0_1_IRQHandler<br />??.thumb_set EXTI0_1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?EXTI2_3_IRQHandler<br />??.thumb_set EXTI2_3_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?EXTI4_15_IRQHandler<br />??.thumb_set EXTI4_15_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?HWDIV_IRQHandler<br />??.thumb_set HWDIV_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?DMA1_Channel1_IRQHandler<br />??.thumb_set DMA1_Channel1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?DMA1_Channel2_3_IRQHandler<br />??.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?DMA1_Channel4_5_IRQHandler<br />??.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?ADC1_COMP_IRQHandler<br />??.thumb_set ADC1_COMP_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM1_BRK_UP_TRG_COM_IRQHandler<br />??.thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM1_CC_IRQHandler<br />??.thumb_set TIM1_CC_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM2_IRQHandler<br />??.thumb_set TIM2_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM3_IRQHandler<br />??.thumb_set TIM3_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM14_IRQHandler<br />??.thumb_set TIM14_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM16_IRQHandler<br />??.thumb_set TIM16_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM17_IRQHandler<br />??.thumb_set TIM17_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?I2C1_IRQHandler<br />??.thumb_set I2C1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?SPI1_IRQHandler<br />??.thumb_set SPI1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?SPI2_IRQHandler<br />??.thumb_set SPI2_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?UART1_IRQHandler<br />??.thumb_set UART1_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?UART2_IRQHandler<br />??.thumb_set UART2_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?UART3_IRQHandler<br />??.thumb_set UART3_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?FLEX_CAN_IRQHandler<br />??.thumb_set FLEX_CAN_IRQHandler,Default_Handler<br />
  以下為修改好的 MM32F0144C6P_FLASH 文件:
  /*<br />*****************************************************************************<br />**<br />**??File? ?? ???: mm32_flash.ld<br />**<br />**??Abstract? ? : Linker script for MM32F0144C6P Device with<br />**? ?? ?? ?? ?? ? 64KByte FLASH, 16KByte RAM<br />**<br />**? ?? ?? ?? ?? ? Set heap size, stack size and stack location according<br />**? ?? ?? ?? ?? ? to application requirements.<br />**<br />**? ?? ?? ?? ?? ? Set memory bank area and size if external memory is used.<br />**<br />**??Target? ?? ?: MM32<br />**<br />**??Environment : VScode<br />**<br />**??Distribution: The file is distributed “as is,” without any warranty<br />**? ?? ?? ?? ?? ? of any kind.<br />*****************************************************************************<br />*/<br /><br /><br />/* Entry Point */<br />ENTRY(Reset_Handler)<br /><br /><br />/* Highest address of the user mode stack */<br />_estack = 0x20002000;? ? /* end of 16K RAM */<br /><br /><br />/* Generate a link error if heap and stack don't fit into RAM */<br />_Min_Heap_Size = 0x200;? ?? ?/* required amount of heap??*/<br />_Min_Stack_Size = 0x400; /* required amount of stack */<br /><br /><br />/* Specify the memory areas */<br />MEMORY<br />{<br />??FLASH (rx)? ?? ?: ORIGIN = 0x08000000, LENGTH = 64K<br />??RAM (xrw)? ?? ? : ORIGIN = 0x20000000, LENGTH = 8K<br />}<br /><br /><br />/* Define output sections */<br />SECTIONS<br />{<br />??/* The startup code goes first into FLASH */<br />??.isr_vector :<br />??{<br />? ? . = ALIGN(4);<br />? ? KEEP(*(.isr_vector)) /* Startup code */<br />? ? . = ALIGN(4);<br />??} >FLASH<br /><br /><br />??/* The program code and other data goes into FLASH */<br />??.text :<br />??{<br />? ? . = ALIGN(4);<br />? ? *(.text)? ?? ?? ???/* .text sections (code) */<br />? ? *(.text*)? ?? ?? ? /* .text* sections (code) */<br />? ? *(.glue_7)? ?? ?? ?/* glue arm to thumb code */<br />? ? *(.glue_7t)? ?? ???/* glue thumb to arm code */<br />? ? *(.eh_frame)<br /><br /><br />? ? KEEP (*(.init))<br />? ? KEEP (*(.fini))<br /><br /><br />? ? . = ALIGN(4);<br />? ? _etext = .;? ?? ???/* define a global symbols at end of code */<br />??} >FLASH<br /><br /><br />??/* Constant data goes into FLASH */<br />??.rodata :<br />??{<br />? ? . = ALIGN(4);<br />? ? *(.rodata)? ?? ?? ?/* .rodata sections (constants, strings, etc.) */<br />? ? *(.rodata*)? ?? ???/* .rodata* sections (constants, strings, etc.) */<br />? ? . = ALIGN(4);<br />??} >FLASH<br /><br /><br />??.ARM.extab? ?: { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH<br />??.ARM : {<br />? ? __exidx_start = .;<br />? ? *(.ARM.exidx*)<br />? ? __exidx_end = .;<br />??} >FLASH<br /><br /><br />??.preinit_array? ???:<br />??{<br />? ? PROVIDE_HIDDEN (__preinit_array_start = .);<br />? ? KEEP (*(.preinit_array*))<br />? ? PROVIDE_HIDDEN (__preinit_array_end = .);<br />??} >FLASH<br />??.init_array :<br />??{<br />? ? PROVIDE_HIDDEN (__init_array_start = .);<br />? ? KEEP (*(SORT(.init_array.*)))<br />? ? KEEP (*(.init_array*))<br />? ? PROVIDE_HIDDEN (__init_array_end = .);<br />??} >FLASH<br />??.fini_array :<br />??{<br />? ? PROVIDE_HIDDEN (__fini_array_start = .);<br />? ? KEEP (*(SORT(.fini_array.*)))<br />? ? KEEP (*(.fini_array*))<br />? ? PROVIDE_HIDDEN (__fini_array_end = .);<br />??} >FLASH<br /><br /><br />??/* used by the startup to initialize data */<br />??_sidata = LOADADDR(.data);<br /><br /><br />??/* Initialized data sections goes into RAM, load LMA copy after code */<br />??.data : <br />??{<br />? ? . = ALIGN(4);<br />? ? _sdata = .;? ?? ???/* create a global symbol at data start */<br />? ? *(.data)? ?? ?? ???/* .data sections */<br />? ? *(.data*)? ?? ?? ? /* .data* sections */<br /><br /><br />? ? . = ALIGN(4);<br />? ? _edata = .;? ?? ???/* define a global symbol at data end */<br />??} >RAM AT> FLASH<br /><br /><br />??/* Uninitialized data section */<br />??. = ALIGN(4);<br />??.bss :<br />??{<br />? ? /* This is used by the startup in order to initialize the .bss secion */<br />? ? _sbss = .;? ?? ?? ?/* define a global symbol at bss start */<br />? ? __bss_start__ = _sbss;<br />? ? *(.bss)<br />? ? *(.bss*)<br />? ? *(COMMON)<br /><br /><br />? ? . = ALIGN(4);<br />? ? _ebss = .;? ?? ?? ?/* define a global symbol at bss end */<br />? ? __bss_end__ = _ebss;<br />??} >RAM<br /><br /><br />??/* User_heap_stack section, used to check that there is enough RAM left */<br />??._user_heap_stack :<br />??{<br />? ? . = ALIGN(4);<br />? ? PROVIDE ( end = . );<br />? ? PROVIDE ( _end = . );<br />? ? . = . + _Min_Heap_Size;<br />? ? . = . + _Min_Stack_Size;<br />? ? . = ALIGN(4);<br />??} >RAM<br /><br /><br />??/* Remove information from the standard libraries */<br />??/DISCARD/ :<br />??{<br />? ? libc.a ( * )<br />? ? libm.a ( * )<br />? ? libgcc.a ( * )<br />??}<br /><br /><br />??.ARM.attributes 0 : { *(.ARM.attributes) }<br />}
  四、著(zhù)手搭建環(huán)境
  有了前面的準備就可以開(kāi)始配置整合開(kāi)發(fā)環(huán)境了。限于篇幅,這里略過(guò)在 VS Code 中下載安裝 EIDE 和 Cortex-Debug(可以讓 VS Code + EIDE 環(huán)境具備調試功能,非必須,可以使用 O-Zone 調試) 插件,可點(diǎn)擊參考超鏈接文章說(shuō)明,這里重點(diǎn)說(shuō)明一下關(guān)鍵配置。
  Cortex-Debug 插件的配置頁(yè)需要配置兩個(gè):Arm Toolchain Path 和 Jlink GDBserver Path。如果 GNU for Arm和 Jlink GDBserver Path 已經(jīng)加入到系統環(huán)境變量中,就可以不用配置了,另外如果在 EIDE 中已經(jīng)配置了 GCC 工具鏈和 J-Link 驅動(dòng)安裝路徑的話(huà),那在這也可以不再配置。而重點(diǎn)的 EIDE 插件配置信息需要根據自己安裝情況來(lái)填寫(xiě),主要包括以下幾個(gè)內容:
  以下為我的配置情況:
  
  
  
  1. 按照上述配置好后基本就可以使用 EIDE 和 Cortex-Debug 插件了
  2. 首先將準備好的 KEIL 工程導入到 EIDE 中,建立好一個(gè)位于 VS Code 中的 EIDE KEIL 工程,名為 KEILPRJ.code-workspace,該文件后面可以直接在 EIDE 中打開(kāi) 類(lèi)似 KEIL 的 .uvprojx 工程描述文件
  3. 然后在項目資源包中將原先 KEIL 的啟動(dòng)文件替換為 GCC 平臺的
  4. 添加 MM32F0140_DFP 芯片支持包并且選擇對應芯片 MM32F0144C6P
  5. Build 配置選擇 GCC ,鏈接腳本選擇準備好的 MM32F0144C6P_FLASH.ld 所在路徑
  6. 燒錄器選項選擇 Jlink,對應好芯片名稱(chēng)
  7. 項目屬性中的包含目錄將之前 KEIL 平臺相關(guān)的替換為 GCC 平臺的即可,不動(dòng)也沒(méi)關(guān)系因為就差了個(gè) .s 文件
  8. 其它按照默認配置即可,最后類(lèi)似在 KEIL 中操作一樣,一鍵編譯和燒錄
  9. 進(jìn)而轉到 Cortex-Debug 中進(jìn)行調試
  
  
  實(shí)際調試過(guò)程中,遇到 2 個(gè)問(wèn)題:
  第一個(gè)是由于意識里認為 MM32F0144C6P 芯片的 RAM 大小為 16KB ,在 .ld 鏈接文件中填寫(xiě)的也自然是 16KB,編譯燒錄后發(fā)現 LED 并未閃爍且串口無(wú)打印輸出,再使用 Cortex-Debug 調試,發(fā)現只要一運行 bl SystemInit 就會(huì )跳到 HardFault 里面去,心里面慌了,會(huì )是 .s 沒(méi)做好?再調試也未定位到問(wèn)題點(diǎn),于是轉而使用更加出色的 O-Zone 工具去調試,結合豐富的資源顯示 ,好不容易定位到一 PUSH 就會(huì )觸發(fā)錯誤,想來(lái)應該是棧大小和地址的問(wèn)題,最后查到原來(lái)使用的芯片應該是 8KB 的 RAM 才對。.s 文件并無(wú)問(wèn)題,改過(guò) .ld 文件后,解決。
  
  
  第二個(gè)是由于官方 lib samples 里面的串口重定向并未考慮到 GCC 平臺的使用,未適配好導致 printf 打印功能失效,于是使用了自定義 printf 方法改造了程序,解決。
  
  void vprint(const char *fmt, va_list argp){<br />? ? char string[200];<br />? ? if(0 < vsprintf(string,fmt,argp)) // build string<br />? ? {<br />? ?? ???for (int i = 0; i < strlen(string); i++) {<br />? ?? ?? ?? ?while ((UART1->CSR & UART_IT_TXIEN) == 0)<br />? ?? ?? ?? ?? ? ; // The loop is sent until it is finished<br />? ?? ?? ?? ?UART1->TDR = (u8)string[i];<br />? ?? ???}<br />? ? }<br />}<br /><br /><br />void my_printf(const char *fmt, ...) // custom printf() function{<br />? ? va_list argp;<br />? ? va_start(argp, fmt);<br />? ? vprint(fmt, argp);<br />? ? va_end(argp);<br />}
  操作到這里已經(jīng)可以盡情享受 VS Code 開(kāi)發(fā) MM32 MCU 的快樂(lè )了,既不用寫(xiě) makefile ,還能保持原來(lái)在 KEIL IDE 中的一些打包工程的操作習慣。另外,依托于工具強大的插件庫,我們還可以在 VS Code 中安裝配置 Astyle 格式化工具,使得代碼結構整潔美觀(guān)并且規范;還可以在 VS Code 部署好本地 Git 倉,利用 Github 進(jìn)行工程迭代管理,使得項目開(kāi)發(fā)變得井然有序;還可以使用 Settings Sync 插件進(jìn)行多臺 PC 機上的 VS Code 配置同步,再也不用擔心更換電腦后重新又得重新安裝配置之前一直使用的那么多插件了??偠灾?,VS Code 真香!
  五、編譯、燒錄及調試演示視頻
  實(shí)驗中導入的示例工程為自己移植的 nr micro shell 組件測試代碼,可以作為 Template 使用。編譯燒錄好程序后,開(kāi)發(fā)板的串口會(huì )輸出調試信息, LED 燈快速閃爍一會(huì )兒然后停止,此時(shí)可以使用 EIDE 中的串口工具終端與開(kāi)發(fā)板進(jìn)行指令交互,根據 LED 的亮滅狀態(tài)來(lái)看終端給開(kāi)發(fā)板發(fā)出的命令是否有被正確執行。
   查看全部

  體驗用VS Code 里 EIDE 進(jìn)行芯片開(kāi)發(fā)的快樂(lè )~ 開(kāi)源、免費、更簡(jiǎn)便、支
  
  出品 21ic論壇yang377156216
  網(wǎng)站:
  整體概覽
  作為 ARM Cotex M 系列內核的 32 位單片機開(kāi)發(fā)者,在平時(shí)工作中經(jīng)常會(huì )因為芯片平臺的不同而去切換各種開(kāi)發(fā)環(huán)境,幸好市面上有著(zhù)各式各樣的工具能夠滿(mǎn)足開(kāi)發(fā)攻城獅們的需求,大體上這些開(kāi)發(fā)環(huán)境可以分為幾大類(lèi):較為通用的集成環(huán)境(編輯、編譯、鏈接、下載和調試等功能合為一體),比較有代表性的有 Keil MDK、IAR EWARM、SEGGER Embedded Studio 、Mbed Studio 等等;廠(chǎng)家自制的專(zhuān)用 IDE ,主流的代表作有 STM32CubeIDE 、MCUXpresso IDE 、RT-Thread Studio 、MPLAB IDE 等等;還有一種 ”混搭版“ 的風(fēng)格,開(kāi)發(fā)者可以在 Eclipse 、VS Code 、Visual Studio 等工具中搭配 ARM GCC 編譯工具鏈進(jìn)行項目軟件開(kāi)發(fā)。在眼花繚亂的工具中,根據是否免費、編輯功能體驗度是否高、上手與熟悉難度是否適宜等因素綜合考慮,今天選擇了一種開(kāi)源、免費且更加簡(jiǎn)便的 VS Code +EIDE + GCC + J-Link 方式進(jìn)行 MM32F0144C6P 芯片的軟件開(kāi)發(fā)。接下來(lái)的內容整體可分為以下幾點(diǎn):
  一、單片機軟件開(kāi)發(fā)流程和其中一些知識點(diǎn)
  一個(gè) ARM Cortex M 系列內核的 MCU 軟件開(kāi)發(fā)者需要清楚完成一個(gè)軟件項目的大致流程是需經(jīng)過(guò)以下幾步的:
  編寫(xiě)代碼。通常是 C/C++ 語(yǔ)言,但是在考究執行效率的時(shí)候就得用到 ASM 匯編,講究面向對象的結構化編程時(shí)甚至用上 Python、Lua 等其它高級語(yǔ)言。
  將各種語(yǔ)言進(jìn)行編譯和鏈接最終生成機器二進(jìn)制文件。相信絕大部分人都親身體驗過(guò)這一步,在很多集成環(huán)境中就是一鍵 Build ,然后默認生成 hex 格式燒錄文件。
  燒錄和調試。一般燒錄方式分為 ISP 、ICP 和 IAP ,根據 MCU 的不同選擇的燒錄工具也不盡相同。有些廠(chǎng)商,例如國產(chǎn)的 STC,只支持串口方式的 ISP ,且配套的在線(xiàn)仿真調試器也是基于串口形式的;而 ARM 內核的大部分 MCU 都支持 JTAG/SWD 接口形式的 ICP 方式,配套的調試工具可以是 J-Link、U-Link、CMSIS DAP-Link 和 ST-Link 等等,也幾乎都有配套的上位機給予支持。
  運行程序?;窘?jīng)過(guò)一番調試后,最終能夠得到滿(mǎn)足功能需求的代碼了,此時(shí)終于可以結案交付了,當然,后面可能還會(huì )面對大大小小的 Bug ,還得繼續 “升級打怪”。
  
  以上內容簡(jiǎn)述了整個(gè)軟件開(kāi)發(fā)的流程,其中涉及到的編譯和鏈接這個(gè)知識點(diǎn)比較重要。為了對這些名詞有更深的理解,特意查了資料。通俗講,編譯器會(huì )將 C 程序轉換成一種機器能理解的符號形式的匯編語(yǔ)言程序,包括了各種偽指令和符號表,然后匯編器將這些代碼轉換成目標文件,包括了機器語(yǔ)言指令、數據和指令正確放入內存所需要的信息,最后由系統程序(鏈接編譯器) 將各個(gè)獨立匯編的機器語(yǔ)言程序組合起來(lái)并且解釋所有未定義的標記,直到生成可執行文件。這其中也會(huì )涉及到很多文件,比如后綴名為 .c / .s / .o / .a / .lib / .elf / .axf / .bin / .hex 等等文件,有些是中間文件,另外一些是結果可執行文件。以下這幅圖用于幫助理解這個(gè)過(guò)程:
  
  既然編譯鏈接這個(gè)過(guò)程有著(zhù)舉足輕重的地位,那市面上的又有哪些主流工具可供選擇呢?據了解,目前針對于 ARM平臺的主流編譯器主要有以下一些:
  
  用到比較多的 KEIL AC5/AC6 是閉源和收費的,編譯速度在大型項目上 AC6 非常有優(yōu)勢,它們都具備多種優(yōu)化等級可調,編出來(lái)的代碼大小較小且運行更為安全,另外也都可以在 ARM 官網(wǎng)單獨下載,比較適合用于產(chǎn)品開(kāi)發(fā)中;IAR 的 ICC 編譯器也更加高性能而被廣泛使用,在很多 benchmark 跑分測試中同顆芯片的運行結果效率都更高些,且編出來(lái)的代碼大小也適中;Keil MDK、IAR 等工具都是收費的,在使用中很可能牽扯到一定的版權問(wèn)題,而 GCC(GNU Compiler Collection)作為GNU計劃的一部分,**是完全免費的,這就是最大的優(yōu)勢**,盡管使用 GCC 是需要付出一定代價(jià)的——對編譯后造成的不良后果負全責(比如編譯出來(lái)的代碼量非常大,程序跑飛從而致使板級器件燒毀,系統死機崩潰導致丟失關(guān)鍵數據之類(lèi)的情況)。
  這里特別感謝硬漢大哥和傻孩子大哥針對各家編譯器做出的實(shí)測比較和探討,可參見(jiàn):
  二、VS Code 優(yōu)勢和 EIDE 插件介紹
  這里選擇 ARM GCC 交叉編譯工具鏈作為最重要的一環(huán),除了看重它開(kāi)源、免費、資料多等優(yōu)勢以外,更重要的是可以跨平臺。除了“內核”,那再來(lái)聊聊為什么選擇 VS Code 作為外殼吧。
  考慮 Windows 環(huán)境下能夠使用 Eclipse IDE for C/C++ Developers 來(lái)搭建 ARM 開(kāi)發(fā)環(huán)境,但是整個(gè) JAVA 環(huán)境占用了太大的 PC 資源,完整地安裝下來(lái)會(huì )非常臃腫,性?xún)r(jià)比不高,所以轉而會(huì )考慮一個(gè)跨平臺且非常流行的編輯器 VS Code ,其特點(diǎn)有:
  等等……
  好的開(kāi)發(fā)環(huán)境就像一把好刀,能讓我們開(kāi)發(fā)速度達到事半功倍,主流的就是對的,下圖顯示了 VS Code 的受歡迎程度:
  
  VS Code 里面的 EIDE 插件是個(gè)什么東西?很多人可能沒(méi)有接觸過(guò),不知道它能讓 KEIL 工程導入到 VS Code 中有多方便。下面來(lái)簡(jiǎn)單介紹。
  EIDE是 keil-assistant 插件的升級版,它們同屬一個(gè)開(kāi)發(fā)團隊,這是一款適用于 8051/STM8/Cortex-M/RISC-V 的單片機開(kāi)發(fā)環(huán)境。能夠在 VS Code 上提供 8051, STM8, Cortex-M, RISC-V 項目的開(kāi)發(fā), 編譯, 燒錄功能。通俗點(diǎn)說(shuō),它就是那個(gè)披上 VS Code 外衣然后可以將 GCC 工具、各種調試工具集大成的 “后來(lái)者”,有多種實(shí)用功能,能讓開(kāi)發(fā)工作變得更加簡(jiǎn)單高效。更多相關(guān)資源可以查看官方提供的文檔:#/ 。
  三、準備資源
  硬件資源如下:
  
  軟件資源如下:
  提示:本文中的展示基于 WIN10 64 位 PC 系統,用戶(hù)需要根據自己的電腦系統下載對應版本的資源。既可通過(guò)上述超鏈接獲取,也可直接使用壓縮包內的,為更好對照文中步驟實(shí)現環(huán)境搭建,建議盡量使用附件提供的資源包。工具軟件的安裝可以根據自己的習慣自定義路徑,也可以一直 next 選擇默認模式,記得將 gcc-arm-none-eabi 工具安裝路徑加入系統環(huán)境變量中,保險起見(jiàn)其它幾個(gè)也可以一并添加。
  
  由于官方不提供 MM32F0144C6P GCC 啟動(dòng)文件對應的鏈接文件,那自己動(dòng)手制作,思路是找到 STM32F030x 相關(guān)的文件來(lái)做修改,因為它們兩者外設資源上極為相似。要注意的是,需要根據 MM32F0144C6P 實(shí)際的中斷向量表去做修改。以下為修改好的 startup_mm32f0140_gcc.s 文件:
  /**<br />??******************************************************************************<br />??* @file? ?? ?startup_mm32f0140_gcc.s<br />??* @author? ? <br />??* @brief? ???MM32F014x devices vector table for GCC toolchain.<br />??*? ?? ?? ?? ?This module performs:<br />??*? ?? ?? ?? ?? ? - Set the initial SP<br />??*? ?? ?? ?? ?? ? - Set the initial PC == Reset_Handler,<br />??*? ?? ?? ?? ?? ? - Set the vector table entries with the exceptions ISR address<br />??*? ?? ?? ?? ?? ? - Branches to main in the C library (which eventually<br />??*? ?? ?? ?? ?? ?? ?calls main()).<br />??*? ?? ?? ?? ?After Reset the Cortex-M0 processor is in Thread mode,<br />??*? ?? ?? ?? ?priority is Privileged, and the Stack is set to Main.<br />??*<br />??******************************************************************************<br />??*/<br /><br /><br />??.syntax unified<br />??.cpu cortex-m0<br />??.fpu softvfp<br />??.thumb<br /><br /><br />.global g_pfnVectors<br />.global Default_Handler<br /><br /><br />/* start address for the initialization values of the .data section.<br />defined in linker script */<br />.word _sidata<br />/* start address for the .data section. defined in linker script */<br />.word _sdata<br />/* end address for the .data section. defined in linker script */<br />.word _edata<br />/* start address for the .bss section. defined in linker script */<br />.word _sbss<br />/* end address for the .bss section. defined in linker script */<br />.word _ebss<br /><br /><br />/**<br /> * @brief??This is the code that gets called when the processor first<br /> *? ?? ?? ? starts execution following a reset event. Only the absolutely<br /> *? ?? ?? ? necessary set is performed, after which the application<br /> *? ?? ?? ? supplied main() routine is called.<br /> * @param??None<br /> * @retval : None<br />*/<br /><br /><br />??.section .text.Reset_Handler<br />??.weak Reset_Handler<br />??.type Reset_Handler, %function<br />Reset_Handler:<br />??ldr? ?r0, =_estack<br />??mov? ?sp, r0? ?? ?? ? /* set stack pointer */<br /><br /><br />/* Copy the data segment initializers from flash to SRAM */<br />??ldr r0, =_sdata<br />??ldr r1, =_edata<br />??ldr r2, =_sidata<br />??movs r3, #0<br />??b LoopCopyDataInit<br /><br /><br />CopyDataInit:<br />??ldr r4, [r2, r3]<br />??str r4, [r0, r3]<br />??adds r3, r3, #4<br /><br /><br />LoopCopyDataInit:<br />??adds r4, r0, r3<br />??cmp r4, r1<br />??bcc CopyDataInit<br />??<br />/* Zero fill the bss segment. */<br />??ldr r2, =_sbss<br />??ldr r4, =_ebss<br />??movs r3, #0<br />??b LoopFillZerobss<br /><br /><br />FillZerobss:<br />??str??r3, [r2]<br />??adds r2, r2, #4<br /><br /><br />LoopFillZerobss:<br />??cmp r2, r4<br />??bcc FillZerobss<br /><br /><br />/* Call the clock system intitialization function.*/<br />??bl??SystemInit<br />/* Call static constructors */<br />??bl __libc_init_array<br />/* Call the application's entry point.*/<br />??bl main<br /><br /><br />LoopForever:<br />? ? b LoopForever<br /><br /><br /><br /><br />.size Reset_Handler, .-Reset_Handler<br /><br /><br />/**<br /> * @brief??This is the code that gets called when the processor receives an<br /> *? ?? ?? ?unexpected interrupt.??This simply enters an infinite loop, preserving<br /> *? ?? ?? ?the system state for examination by a debugger.<br /> *<br /> * @param??None<br /> * @retval : None<br />*/<br />? ? .section .text.Default_Handler,"ax",%progbits<br />Default_Handler:<br />Infinite_Loop:<br />??b Infinite_Loop<br />??.size Default_Handler, .-Default_Handler<br />/******************************************************************************<br />** The minimal vector table for a Cortex M0.??Note that the proper constructs<br />* must be placed on this to ensure that it ends up at physical address<br />* 0x0000.0000.<br />*******************************************************************************/<br />? ?.section .isr_vector,"a",%progbits<br />??.type g_pfnVectors, %object<br />??.size g_pfnVectors, .-g_pfnVectors<br /><br /><br /><br /><br />g_pfnVectors:<br />??.word??_estack<br />??.word??Reset_Handler<br />??.word??NMI_Handler<br />??.word??HardFault_Handler<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??SVC_Handler<br />??.word??0<br />??.word??0<br />??.word??PendSV_Handler<br />??.word??SysTick_Handler<br />??.word??WWDG_IRQHandler? ?? ?? ?? ?? ?? ? /* Window WatchDog? ?? ?? ?? ???*/<br />??.word??PVD_IRQHandler? ?? ?? ?? ?? ?? ???/* PVD through EXTI Line detect */<br />??.word??MIPI_IRQHandler? ?? ?? ?? ?? ?? ? /* MIPI? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??FLASH_IRQHandler? ?? ?? ?? ?? ?? ?/* FLASH? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??RCC_IRQHandler? ?? ?? ?? ?? ?? ???/* RCC? ?? ?? ?? ?? ?? ?? ?? ???*/<br />??.word??EXTI0_1_IRQHandler? ?? ?? ?? ?? ? /* EXTI Line 0 and 1? ?? ?? ?? ?*/<br />??.word??EXTI2_3_IRQHandler? ?? ?? ?? ?? ? /* EXTI Line 2 and 3? ?? ?? ?? ?*/<br />??.word??EXTI4_15_IRQHandler? ?? ?? ?? ?? ?/* EXTI Line 4 to 15? ?? ?? ?? ?*/<br />??.word??HWDIV_IRQHandler? ?? ?? ?? ?? ?? ?/* HWDIV? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??DMA1_Channel1_IRQHandler? ?? ?? ? /* DMA1 Channel 1? ?? ?? ?? ?? ?*/<br />??.word??DMA1_Channel2_3_IRQHandler? ?? ???/* DMA1 Channel 2 and Channel 3 */<br />??.word??DMA1_Channel4_5_IRQHandler? ?? ???/* DMA1 Channel 4 and Channel 5 */<br />??.word??ADC1_COMP_IRQHandler? ?? ?? ?? ???/* ADC1 & COMP? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM1_BRK_UP_TRG_COM_IRQHandler? ? /* TIM1 Break, Update, Trigger and Commutation */<br />??.word??TIM1_CC_IRQHandler? ?? ?? ?? ?? ? /* TIM1 Capture Compare? ?? ?? ?*/<br />??.word??TIM2_IRQHandler? ?? ?? ?? ?? ?? ? /* TIM2? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??TIM3_IRQHandler? ?? ?? ?? ?? ?? ? /* TIM3? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM14_IRQHandler? ?? ?? ?? ?? ?? ?/* TIM14? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM16_IRQHandler? ?? ?? ?? ?? ?? ?/* TIM16? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM17_IRQHandler? ?? ?? ?? ?? ?? ?/* TIM17? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??I2C1_IRQHandler? ?? ?? ?? ?? ?? ? /* I2C1? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??SPI1_IRQHandler? ?? ?? ?? ?? ?? ? /* SPI1? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??SPI2_IRQHandler? ?? ?? ?? ?? ?? ? /* SPI2? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??UART1_IRQHandler? ?? ?? ?? ?? ?? ?/* UART1? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??UART2_IRQHandler? ?? ?? ?? ?? ?? ?/* UART2? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??UART3_IRQHandler? ?? ?? ?? ?? ?? ?/* UART3? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??FLEX_CAN_IRQHandler? ?? ?? ?? ?? ?/* FLEX_CAN? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br /><br /><br /><br /><br />/*******************************************************************************<br />** Provide weak aliases for each Exception handler to the Default_Handler.<br />* As they are weak aliases, any function with the same name will override<br />* this definition.<br />********************************************************************************/<br /><br /><br />??.weak? ?? ?NMI_Handler<br />??.thumb_set NMI_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?HardFault_Handler<br />??.thumb_set HardFault_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?SVC_Handler<br />??.thumb_set SVC_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?PendSV_Handler<br />??.thumb_set PendSV_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?SysTick_Handler<br />??.thumb_set SysTick_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?WWDG_IRQHandler<br />??.thumb_set WWDG_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?PVD_IRQHandler<br />??.thumb_set PVD_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?MIPI_IRQHandler<br />??.thumb_set MIPI_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?FLASH_IRQHandler<br />??.thumb_set FLASH_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?RCC_IRQHandler<br />??.thumb_set RCC_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?EXTI0_1_IRQHandler<br />??.thumb_set EXTI0_1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?EXTI2_3_IRQHandler<br />??.thumb_set EXTI2_3_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?EXTI4_15_IRQHandler<br />??.thumb_set EXTI4_15_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?HWDIV_IRQHandler<br />??.thumb_set HWDIV_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?DMA1_Channel1_IRQHandler<br />??.thumb_set DMA1_Channel1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?DMA1_Channel2_3_IRQHandler<br />??.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?DMA1_Channel4_5_IRQHandler<br />??.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?ADC1_COMP_IRQHandler<br />??.thumb_set ADC1_COMP_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM1_BRK_UP_TRG_COM_IRQHandler<br />??.thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM1_CC_IRQHandler<br />??.thumb_set TIM1_CC_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM2_IRQHandler<br />??.thumb_set TIM2_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM3_IRQHandler<br />??.thumb_set TIM3_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM14_IRQHandler<br />??.thumb_set TIM14_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM16_IRQHandler<br />??.thumb_set TIM16_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM17_IRQHandler<br />??.thumb_set TIM17_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?I2C1_IRQHandler<br />??.thumb_set I2C1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?SPI1_IRQHandler<br />??.thumb_set SPI1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?SPI2_IRQHandler<br />??.thumb_set SPI2_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?UART1_IRQHandler<br />??.thumb_set UART1_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?UART2_IRQHandler<br />??.thumb_set UART2_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?UART3_IRQHandler<br />??.thumb_set UART3_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?FLEX_CAN_IRQHandler<br />??.thumb_set FLEX_CAN_IRQHandler,Default_Handler<br />
  以下為修改好的 MM32F0144C6P_FLASH 文件:
  /*<br />*****************************************************************************<br />**<br />**??File? ?? ???: mm32_flash.ld<br />**<br />**??Abstract? ? : Linker script for MM32F0144C6P Device with<br />**? ?? ?? ?? ?? ? 64KByte FLASH, 16KByte RAM<br />**<br />**? ?? ?? ?? ?? ? Set heap size, stack size and stack location according<br />**? ?? ?? ?? ?? ? to application requirements.<br />**<br />**? ?? ?? ?? ?? ? Set memory bank area and size if external memory is used.<br />**<br />**??Target? ?? ?: MM32<br />**<br />**??Environment : VScode<br />**<br />**??Distribution: The file is distributed “as is,” without any warranty<br />**? ?? ?? ?? ?? ? of any kind.<br />*****************************************************************************<br />*/<br /><br /><br />/* Entry Point */<br />ENTRY(Reset_Handler)<br /><br /><br />/* Highest address of the user mode stack */<br />_estack = 0x20002000;? ? /* end of 16K RAM */<br /><br /><br />/* Generate a link error if heap and stack don't fit into RAM */<br />_Min_Heap_Size = 0x200;? ?? ?/* required amount of heap??*/<br />_Min_Stack_Size = 0x400; /* required amount of stack */<br /><br /><br />/* Specify the memory areas */<br />MEMORY<br />{<br />??FLASH (rx)? ?? ?: ORIGIN = 0x08000000, LENGTH = 64K<br />??RAM (xrw)? ?? ? : ORIGIN = 0x20000000, LENGTH = 8K<br />}<br /><br /><br />/* Define output sections */<br />SECTIONS<br />{<br />??/* The startup code goes first into FLASH */<br />??.isr_vector :<br />??{<br />? ? . = ALIGN(4);<br />? ? KEEP(*(.isr_vector)) /* Startup code */<br />? ? . = ALIGN(4);<br />??} >FLASH<br /><br /><br />??/* The program code and other data goes into FLASH */<br />??.text :<br />??{<br />? ? . = ALIGN(4);<br />? ? *(.text)? ?? ?? ???/* .text sections (code) */<br />? ? *(.text*)? ?? ?? ? /* .text* sections (code) */<br />? ? *(.glue_7)? ?? ?? ?/* glue arm to thumb code */<br />? ? *(.glue_7t)? ?? ???/* glue thumb to arm code */<br />? ? *(.eh_frame)<br /><br /><br />? ? KEEP (*(.init))<br />? ? KEEP (*(.fini))<br /><br /><br />? ? . = ALIGN(4);<br />? ? _etext = .;? ?? ???/* define a global symbols at end of code */<br />??} >FLASH<br /><br /><br />??/* Constant data goes into FLASH */<br />??.rodata :<br />??{<br />? ? . = ALIGN(4);<br />? ? *(.rodata)? ?? ?? ?/* .rodata sections (constants, strings, etc.) */<br />? ? *(.rodata*)? ?? ???/* .rodata* sections (constants, strings, etc.) */<br />? ? . = ALIGN(4);<br />??} >FLASH<br /><br /><br />??.ARM.extab? ?: { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH<br />??.ARM : {<br />? ? __exidx_start = .;<br />? ? *(.ARM.exidx*)<br />? ? __exidx_end = .;<br />??} >FLASH<br /><br /><br />??.preinit_array? ???:<br />??{<br />? ? PROVIDE_HIDDEN (__preinit_array_start = .);<br />? ? KEEP (*(.preinit_array*))<br />? ? PROVIDE_HIDDEN (__preinit_array_end = .);<br />??} >FLASH<br />??.init_array :<br />??{<br />? ? PROVIDE_HIDDEN (__init_array_start = .);<br />? ? KEEP (*(SORT(.init_array.*)))<br />? ? KEEP (*(.init_array*))<br />? ? PROVIDE_HIDDEN (__init_array_end = .);<br />??} >FLASH<br />??.fini_array :<br />??{<br />? ? PROVIDE_HIDDEN (__fini_array_start = .);<br />? ? KEEP (*(SORT(.fini_array.*)))<br />? ? KEEP (*(.fini_array*))<br />? ? PROVIDE_HIDDEN (__fini_array_end = .);<br />??} >FLASH<br /><br /><br />??/* used by the startup to initialize data */<br />??_sidata = LOADADDR(.data);<br /><br /><br />??/* Initialized data sections goes into RAM, load LMA copy after code */<br />??.data : <br />??{<br />? ? . = ALIGN(4);<br />? ? _sdata = .;? ?? ???/* create a global symbol at data start */<br />? ? *(.data)? ?? ?? ???/* .data sections */<br />? ? *(.data*)? ?? ?? ? /* .data* sections */<br /><br /><br />? ? . = ALIGN(4);<br />? ? _edata = .;? ?? ???/* define a global symbol at data end */<br />??} >RAM AT> FLASH<br /><br /><br />??/* Uninitialized data section */<br />??. = ALIGN(4);<br />??.bss :<br />??{<br />? ? /* This is used by the startup in order to initialize the .bss secion */<br />? ? _sbss = .;? ?? ?? ?/* define a global symbol at bss start */<br />? ? __bss_start__ = _sbss;<br />? ? *(.bss)<br />? ? *(.bss*)<br />? ? *(COMMON)<br /><br /><br />? ? . = ALIGN(4);<br />? ? _ebss = .;? ?? ?? ?/* define a global symbol at bss end */<br />? ? __bss_end__ = _ebss;<br />??} >RAM<br /><br /><br />??/* User_heap_stack section, used to check that there is enough RAM left */<br />??._user_heap_stack :<br />??{<br />? ? . = ALIGN(4);<br />? ? PROVIDE ( end = . );<br />? ? PROVIDE ( _end = . );<br />? ? . = . + _Min_Heap_Size;<br />? ? . = . + _Min_Stack_Size;<br />? ? . = ALIGN(4);<br />??} >RAM<br /><br /><br />??/* Remove information from the standard libraries */<br />??/DISCARD/ :<br />??{<br />? ? libc.a ( * )<br />? ? libm.a ( * )<br />? ? libgcc.a ( * )<br />??}<br /><br /><br />??.ARM.attributes 0 : { *(.ARM.attributes) }<br />}
  四、著(zhù)手搭建環(huán)境
  有了前面的準備就可以開(kāi)始配置整合開(kāi)發(fā)環(huán)境了。限于篇幅,這里略過(guò)在 VS Code 中下載安裝 EIDE 和 Cortex-Debug(可以讓 VS Code + EIDE 環(huán)境具備調試功能,非必須,可以使用 O-Zone 調試) 插件,可點(diǎn)擊參考超鏈接文章說(shuō)明,這里重點(diǎn)說(shuō)明一下關(guān)鍵配置。
  Cortex-Debug 插件的配置頁(yè)需要配置兩個(gè):Arm Toolchain Path 和 Jlink GDBserver Path。如果 GNU for Arm和 Jlink GDBserver Path 已經(jīng)加入到系統環(huán)境變量中,就可以不用配置了,另外如果在 EIDE 中已經(jīng)配置了 GCC 工具鏈和 J-Link 驅動(dòng)安裝路徑的話(huà),那在這也可以不再配置。而重點(diǎn)的 EIDE 插件配置信息需要根據自己安裝情況來(lái)填寫(xiě),主要包括以下幾個(gè)內容:
  以下為我的配置情況:
  
  
  
  1. 按照上述配置好后基本就可以使用 EIDE 和 Cortex-Debug 插件了
  2. 首先將準備好的 KEIL 工程導入到 EIDE 中,建立好一個(gè)位于 VS Code 中的 EIDE KEIL 工程,名為 KEILPRJ.code-workspace,該文件后面可以直接在 EIDE 中打開(kāi) 類(lèi)似 KEIL 的 .uvprojx 工程描述文件
  3. 然后在項目資源包中將原先 KEIL 的啟動(dòng)文件替換為 GCC 平臺的
  4. 添加 MM32F0140_DFP 芯片支持包并且選擇對應芯片 MM32F0144C6P
  5. Build 配置選擇 GCC ,鏈接腳本選擇準備好的 MM32F0144C6P_FLASH.ld 所在路徑
  6. 燒錄器選項選擇 Jlink,對應好芯片名稱(chēng)
  7. 項目屬性中的包含目錄將之前 KEIL 平臺相關(guān)的替換為 GCC 平臺的即可,不動(dòng)也沒(méi)關(guān)系因為就差了個(gè) .s 文件
  8. 其它按照默認配置即可,最后類(lèi)似在 KEIL 中操作一樣,一鍵編譯和燒錄
  9. 進(jìn)而轉到 Cortex-Debug 中進(jìn)行調試
  
  
  實(shí)際調試過(guò)程中,遇到 2 個(gè)問(wèn)題:
  第一個(gè)是由于意識里認為 MM32F0144C6P 芯片的 RAM 大小為 16KB ,在 .ld 鏈接文件中填寫(xiě)的也自然是 16KB,編譯燒錄后發(fā)現 LED 并未閃爍且串口無(wú)打印輸出,再使用 Cortex-Debug 調試,發(fā)現只要一運行 bl SystemInit 就會(huì )跳到 HardFault 里面去,心里面慌了,會(huì )是 .s 沒(méi)做好?再調試也未定位到問(wèn)題點(diǎn),于是轉而使用更加出色的 O-Zone 工具去調試,結合豐富的資源顯示 ,好不容易定位到一 PUSH 就會(huì )觸發(fā)錯誤,想來(lái)應該是棧大小和地址的問(wèn)題,最后查到原來(lái)使用的芯片應該是 8KB 的 RAM 才對。.s 文件并無(wú)問(wèn)題,改過(guò) .ld 文件后,解決。
  
  
  第二個(gè)是由于官方 lib samples 里面的串口重定向并未考慮到 GCC 平臺的使用,未適配好導致 printf 打印功能失效,于是使用了自定義 printf 方法改造了程序,解決。
  
  void vprint(const char *fmt, va_list argp){<br />? ? char string[200];<br />? ? if(0 < vsprintf(string,fmt,argp)) // build string<br />? ? {<br />? ?? ???for (int i = 0; i < strlen(string); i++) {<br />? ?? ?? ?? ?while ((UART1->CSR & UART_IT_TXIEN) == 0)<br />? ?? ?? ?? ?? ? ; // The loop is sent until it is finished<br />? ?? ?? ?? ?UART1->TDR = (u8)string[i];<br />? ?? ???}<br />? ? }<br />}<br /><br /><br />void my_printf(const char *fmt, ...) // custom printf() function{<br />? ? va_list argp;<br />? ? va_start(argp, fmt);<br />? ? vprint(fmt, argp);<br />? ? va_end(argp);<br />}
  操作到這里已經(jīng)可以盡情享受 VS Code 開(kāi)發(fā) MM32 MCU 的快樂(lè )了,既不用寫(xiě) makefile ,還能保持原來(lái)在 KEIL IDE 中的一些打包工程的操作習慣。另外,依托于工具強大的插件庫,我們還可以在 VS Code 中安裝配置 Astyle 格式化工具,使得代碼結構整潔美觀(guān)并且規范;還可以在 VS Code 部署好本地 Git 倉,利用 Github 進(jìn)行工程迭代管理,使得項目開(kāi)發(fā)變得井然有序;還可以使用 Settings Sync 插件進(jìn)行多臺 PC 機上的 VS Code 配置同步,再也不用擔心更換電腦后重新又得重新安裝配置之前一直使用的那么多插件了??偠灾?,VS Code 真香!
  五、編譯、燒錄及調試演示視頻
  實(shí)驗中導入的示例工程為自己移植的 nr micro shell 組件測試代碼,可以作為 Template 使用。編譯燒錄好程序后,開(kāi)發(fā)板的串口會(huì )輸出調試信息, LED 燈快速閃爍一會(huì )兒然后停止,此時(shí)可以使用 EIDE 中的串口工具終端與開(kāi)發(fā)板進(jìn)行指令交互,根據 LED 的亮滅狀態(tài)來(lái)看終端給開(kāi)發(fā)板發(fā)出的命令是否有被正確執行。
  

10個(gè)基于java的cms網(wǎng)站內容管理系統(14款java開(kāi)源cms系統國內比較好的java建站系統)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 127 次瀏覽 ? 2022-04-20 13:15 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統(14款java開(kāi)源cms系統國內比較好的java建站系統)
  javacmsjava內容管理系統14 java開(kāi)源cms系統新聞2020-04-17 編輯:深圳網(wǎng)站建設閱讀()14 java開(kāi)源cms系統
  國內比較好的java開(kāi)源cms系統,國內比較流行的開(kāi)源javacms系統,java內容管理系統,java建站系統整理,14個(gè)常用java建站系統cms@ > java網(wǎng)站系統。
  
  java 開(kāi)源cms系統1:InfoGlueinfoglue 是一個(gè)完全用Java 開(kāi)發(fā)的先進(jìn)的、可擴展的、健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  項目主頁(yè):#infoglue#org
  java 開(kāi)源cms系統2.MagnoliaMagnolia 是一個(gè)基于Java 的開(kāi)源Web 內容管理系統(cms),建立在Java 內容知識庫標準(JSR-17 0).Magnolia支持英文、中文等14種語(yǔ)言,支持本地搜索、基于XML的導入/導出、跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的War文件就可以部署到任何J2EE容器中。版本還增加了數字媒體的在線(xiàn)編輯功能。
  項目主頁(yè):#obinary#com/en/magnolia/about.html
  java open sourcecmssystem of3.opencmsOpencms是用Java編寫(xiě)的J2EE產(chǎn)品。它與 Tomcat 捆綁在一起。但也可以使用 ATG Dynamo、weblogic 和 websphere。 Opencms 支持多種RDBMS 來(lái)存儲內容,包括oracle、sql server、Sybase 和mysql。新版本提供了新的模板引擎、JSP 支持、新的連接管理系統,并提高了穩定性。
  項目主頁(yè):#opencms#org/opencms/en/index.html
  java開(kāi)源cms系統4.JBoss Nukes 基于J2EE架構的JBoss Nukes是一個(gè)完整的內容管理系統。它收錄高級用戶(hù)組管理、安全規則等組件。直到運行時(shí)才部署這些組件。
  項目主頁(yè):#jboss#org/index.html? module=html&op=userdisplay&id=developers/projects/nukes/index
  java開(kāi)源cms5.eAdmin/OWX系統基于java/jsp SiteEditor、cms、列表生成器等開(kāi)源軟件。包括:模塊、XML 配置、Struts、自己的 API、組件、所見(jiàn)即所得、多語(yǔ)言、多用戶(hù)、基于 Web 的管理器。
  項目主頁(yè):#eadmin.ch/pages/en/home/
  java開(kāi)源cms系統6.Apache LenyaApache Lenya是一個(gè)開(kāi)源的java內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
  項目主頁(yè):#org/lenya/
  java開(kāi)源cms系統7.CofaxCofax是基于Java/XMLcms的。它是由 Kinight Ridder 開(kāi)發(fā)的,旨在促進(jìn)其新聞的管理網(wǎng)站。
  項目主頁(yè):#cofax#org/index.jsp
  java開(kāi)源cms系統8.webEditorwebEditor是專(zhuān)門(mén)論壇網(wǎng)站的管理系統。使用繭作為機制。
  項目主頁(yè):#net/
  java開(kāi)源cms9.MMBaseMMBase基于MPL的開(kāi)源cms系統,具有信息發(fā)布和維護方便的特點(diǎn),包括新聞發(fā)布、論壇、聊天室等模塊,但個(gè)人認為這個(gè)項目最大的優(yōu)勢就是文檔豐富,這在開(kāi)源項目中是很少見(jiàn)的。
  項目主頁(yè):#mmbase#org/
  java開(kāi)源cmssystem 10.Ionion是一個(gè)基于最新技術(shù)的簡(jiǎn)單但功能強大的內容管理系統。它完全符合 J2EE 標準并使用 XML 來(lái)定義內容結構。使用XSL將內容轉換成各種格式如:HTML、XML、pdf、TXT等,并使用JSTL作為模板系統。
  項目主頁(yè):#net/section/s0.html
  java開(kāi)源cms系統11.JahiaJahia最近發(fā)布了Jahia內容集成管理系統cms和它工作的門(mén)戶(hù)服務(wù)器。此版本包括功能齊全的搜索引擎、輕量級文檔管理系統(支持 WebDAV)和一些協(xié)作應用程序門(mén)戶(hù)(討論組、WebMail、待辦事項列表、時(shí)間表...)
  項目主頁(yè):#jahia#org/jahia/page84.html
  java開(kāi)源cmssystem 12.JetNukeJetNuke是一個(gè)網(wǎng)站內容管理系統(cms),基于PHPNuke,用Java開(kāi)發(fā)。
  JetNuke 可免費使用且開(kāi)源(GNU 許可)。
  JetNuke 嚴格分離邏輯、數據和樣式
  7 種預定義樣式,沒(méi)有復雜的配置文件,一個(gè) Web 管理。 JetNuke 可以很好地與 JForum 結合使用。
  JetNuke 使用 fckeditor(所見(jiàn)即所得 HTML 編輯器)編輯 HTML 內容。
  項目主頁(yè):#jetnuke#org/
  java 開(kāi)源cmssystem 13.dotcmsdotcms是一個(gè) 100% 免費的基于 J2EE/門(mén)戶(hù)的內容管理系統,具有許多吸引人的特性。其他 cms 沒(méi)有。 dotcms 中使用的開(kāi)源項目和框架包括:Apache Tomcat、Liferay Enterprise Portal、Apache Struts、Hibernate ORM、Velocity Template Language、Lucene Search Engine。 dotcms 使用 Eclipse IDE 開(kāi)發(fā),使用 Velocity + Struts 作為前端,使 dotcms 易于擴展和構建。 dotcms 的許可證:Dotmarketing 公共許可證。
  項目主頁(yè):#dotcms#org/projects/dotcms/
  java開(kāi)源cms系統14.OpenEditpenEdit包括三大模塊:Web內容管理、電子商務(wù)、博客。 Web 內容管理包括在線(xiàn)編輯、動(dòng)態(tài)布局、拼寫(xiě)檢查(英文)、用戶(hù)管理、文檔管理、版本控制和通知工具。電子商務(wù)模塊包括在線(xiàn)產(chǎn)品目錄管理、購物車(chē)、電子支付、產(chǎn)品展示和高級產(chǎn)品搜索(使用Nutch/Lucene的網(wǎng)絡(luò )爬取和搜索功能進(jìn)行高級搜索,因此不需要數據庫功能)。博客模塊包括在線(xiàn)管理、評論、注冊和RSS/Atom引擎。 OpenEdit 使用的開(kāi)源組件有:Velocity、Dom4j、Spring、Lucene。
  項目主頁(yè):#openedit#org/
  類(lèi)似的內容 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統(14款java開(kāi)源cms系統國內比較好的java建站系統)
  javacmsjava內容管理系統14 java開(kāi)源cms系統新聞2020-04-17 編輯:深圳網(wǎng)站建設閱讀()14 java開(kāi)源cms系統
  國內比較好的java開(kāi)源cms系統,國內比較流行的開(kāi)源javacms系統,java內容管理系統,java建站系統整理,14個(gè)常用java建站系統cms@ > java網(wǎng)站系統。
  
  java 開(kāi)源cms系統1:InfoGlueinfoglue 是一個(gè)完全用Java 開(kāi)發(fā)的先進(jìn)的、可擴展的、健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  項目主頁(yè):#infoglue#org
  java 開(kāi)源cms系統2.MagnoliaMagnolia 是一個(gè)基于Java 的開(kāi)源Web 內容管理系統(cms),建立在Java 內容知識庫標準(JSR-17 0).Magnolia支持英文、中文等14種語(yǔ)言,支持本地搜索、基于XML的導入/導出、跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的War文件就可以部署到任何J2EE容器中。版本還增加了數字媒體的在線(xiàn)編輯功能。
  項目主頁(yè):#obinary#com/en/magnolia/about.html
  java open sourcecmssystem of3.opencmsOpencms是用Java編寫(xiě)的J2EE產(chǎn)品。它與 Tomcat 捆綁在一起。但也可以使用 ATG Dynamo、weblogic 和 websphere。 Opencms 支持多種RDBMS 來(lái)存儲內容,包括oracle、sql server、Sybase 和mysql。新版本提供了新的模板引擎、JSP 支持、新的連接管理系統,并提高了穩定性。
  項目主頁(yè):#opencms#org/opencms/en/index.html
  java開(kāi)源cms系統4.JBoss Nukes 基于J2EE架構的JBoss Nukes是一個(gè)完整的內容管理系統。它收錄高級用戶(hù)組管理、安全規則等組件。直到運行時(shí)才部署這些組件。
  項目主頁(yè):#jboss#org/index.html? module=html&op=userdisplay&id=developers/projects/nukes/index
  java開(kāi)源cms5.eAdmin/OWX系統基于java/jsp SiteEditor、cms、列表生成器等開(kāi)源軟件。包括:模塊、XML 配置、Struts、自己的 API、組件、所見(jiàn)即所得、多語(yǔ)言、多用戶(hù)、基于 Web 的管理器。
  項目主頁(yè):#eadmin.ch/pages/en/home/
  java開(kāi)源cms系統6.Apache LenyaApache Lenya是一個(gè)開(kāi)源的java內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
  項目主頁(yè):#org/lenya/
  java開(kāi)源cms系統7.CofaxCofax是基于Java/XMLcms的。它是由 Kinight Ridder 開(kāi)發(fā)的,旨在促進(jìn)其新聞的管理網(wǎng)站。
  項目主頁(yè):#cofax#org/index.jsp
  java開(kāi)源cms系統8.webEditorwebEditor是專(zhuān)門(mén)論壇網(wǎng)站的管理系統。使用繭作為機制。
  項目主頁(yè):#net/
  java開(kāi)源cms9.MMBaseMMBase基于MPL的開(kāi)源cms系統,具有信息發(fā)布和維護方便的特點(diǎn),包括新聞發(fā)布、論壇、聊天室等模塊,但個(gè)人認為這個(gè)項目最大的優(yōu)勢就是文檔豐富,這在開(kāi)源項目中是很少見(jiàn)的。
  項目主頁(yè):#mmbase#org/
  java開(kāi)源cmssystem 10.Ionion是一個(gè)基于最新技術(shù)的簡(jiǎn)單但功能強大的內容管理系統。它完全符合 J2EE 標準并使用 XML 來(lái)定義內容結構。使用XSL將內容轉換成各種格式如:HTML、XML、pdf、TXT等,并使用JSTL作為模板系統。
  項目主頁(yè):#net/section/s0.html
  java開(kāi)源cms系統11.JahiaJahia最近發(fā)布了Jahia內容集成管理系統cms和它工作的門(mén)戶(hù)服務(wù)器。此版本包括功能齊全的搜索引擎、輕量級文檔管理系統(支持 WebDAV)和一些協(xié)作應用程序門(mén)戶(hù)(討論組、WebMail、待辦事項列表、時(shí)間表...)
  項目主頁(yè):#jahia#org/jahia/page84.html
  java開(kāi)源cmssystem 12.JetNukeJetNuke是一個(gè)網(wǎng)站內容管理系統(cms),基于PHPNuke,用Java開(kāi)發(fā)。
  JetNuke 可免費使用且開(kāi)源(GNU 許可)。
  JetNuke 嚴格分離邏輯、數據和樣式
  7 種預定義樣式,沒(méi)有復雜的配置文件,一個(gè) Web 管理。 JetNuke 可以很好地與 JForum 結合使用。
  JetNuke 使用 fckeditor(所見(jiàn)即所得 HTML 編輯器)編輯 HTML 內容。
  項目主頁(yè):#jetnuke#org/
  java 開(kāi)源cmssystem 13.dotcmsdotcms是一個(gè) 100% 免費的基于 J2EE/門(mén)戶(hù)的內容管理系統,具有許多吸引人的特性。其他 cms 沒(méi)有。 dotcms 中使用的開(kāi)源項目和框架包括:Apache Tomcat、Liferay Enterprise Portal、Apache Struts、Hibernate ORM、Velocity Template Language、Lucene Search Engine。 dotcms 使用 Eclipse IDE 開(kāi)發(fā),使用 Velocity + Struts 作為前端,使 dotcms 易于擴展和構建。 dotcms 的許可證:Dotmarketing 公共許可證。
  項目主頁(yè):#dotcms#org/projects/dotcms/
  java開(kāi)源cms系統14.OpenEditpenEdit包括三大模塊:Web內容管理、電子商務(wù)、博客。 Web 內容管理包括在線(xiàn)編輯、動(dòng)態(tài)布局、拼寫(xiě)檢查(英文)、用戶(hù)管理、文檔管理、版本控制和通知工具。電子商務(wù)模塊包括在線(xiàn)產(chǎn)品目錄管理、購物車(chē)、電子支付、產(chǎn)品展示和高級產(chǎn)品搜索(使用Nutch/Lucene的網(wǎng)絡(luò )爬取和搜索功能進(jìn)行高級搜索,因此不需要數據庫功能)。博客模塊包括在線(xiàn)管理、評論、注冊和RSS/Atom引擎。 OpenEdit 使用的開(kāi)源組件有:Velocity、Dom4j、Spring、Lucene。
  項目主頁(yè):#openedit#org/
  類(lèi)似的內容

10個(gè)基于java的cms網(wǎng)站內容管理系統(DNS原理及其解析過(guò)程精彩剖析大部分域名)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 123 次瀏覽 ? 2022-04-20 05:00 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統(DNS原理及其解析過(guò)程精彩剖析大部分域名)
  DNS原理及其解析過(guò)程
  精彩分析
  大部分網(wǎng)絡(luò )通信都是基于TCP/IP的,而TCP/IP是基于IP地址的,所以計算機在網(wǎng)絡(luò )上通信時(shí),只能識別“202.96. 13 4.133”,但不是域名。我們不記得有超過(guò)10個(gè)IP地址的網(wǎng)站,所以當我們訪(fǎng)問(wèn)網(wǎng)站時(shí),我們大多在瀏覽器地址欄看到想要的頁(yè)面,那是因為有一臺叫做“DNS服務(wù)器”的電腦會(huì )自動(dòng)將我們的域名“翻譯”成對應的IP地址,然后調出IP地址對應的網(wǎng)頁(yè)。
  什么是 DNS?
  DNS(域名系統)是“域名系統”的英文縮寫(xiě)。它是組織成域層次結構的計算機和網(wǎng)絡(luò )服務(wù)命名系統。它用于 TCP/IP 網(wǎng)絡(luò )。它提供的服務(wù)用于將主機名和域名轉換為 IP 地址的工作。 DNS就是這樣一個(gè)“翻譯器”,它的基本工作原理可以用下圖來(lái)表示。
  
  DNS 域名
  域名系統充當分層和分布式數據庫,收錄各種類(lèi)型的數據,包括主機名和域名。 DNS 數據庫中的名稱(chēng)形成稱(chēng)為域名稱(chēng)空間的層次樹(shù)結構。域名收錄一個(gè)以標簽分隔的點(diǎn),例如:.
  完全限定域名 (FQDN) 唯一標識主機在 DNS 層次結構樹(shù)中的位置,由以點(diǎn)分隔的主機名列表分隔,這些主機名由指定路徑從根目錄引用。下圖顯示了一個(gè)名為 im 的主機的 DNS 樹(shù)示例。主機的 FQDN 是。
  DNS域名空間結構,又稱(chēng)全限定域名:
  
  全球只有13個(gè)根域名服務(wù)器(沒(méi)有中國)
  DNS 域命名空間的組織方式
  下表描述了用于按功能描述命名空間中 DNS 域名的五個(gè)類(lèi)別,以及每種名稱(chēng)類(lèi)型的示例。
  
  頂級域也稱(chēng)為一級域,二級域也稱(chēng)為二級域,主機名也稱(chēng)為三級域。三級域是自己申請二級域后自己定義的
  根域名服務(wù)器只負責管理一級域名,一級域名服務(wù)器只負責管理二級域名,以此類(lèi)推
  DNS 和 Internet 域
  Internet 域名系統由名稱(chēng)注冊機構維護,并通過(guò)按組織和國家/地區分配頂級域在 Internet 上進(jìn)行管理。這些域符合國際標準 3166。下表顯示了為組織使用而保留的許多現有縮寫(xiě),以及兩個(gè)字母和三個(gè)字母的國家/地區縮寫(xiě)。一些常見(jiàn)的DNS域名如下:
  組織域
  
  國家或地區
  
  資源記錄
  DNS 數據庫中收錄的資源記錄 (RR)。每個(gè) RR 標識數據庫中的特定資源。我們在搭建DNS服務(wù)器的時(shí)候,經(jīng)常會(huì )用到SOA、NS、A等記錄,而在維護DNS服務(wù)器的時(shí)候,我們會(huì )用到MX、CNAME記錄。
  常見(jiàn)的RR如下圖所示:
  
  DNS服務(wù)工作流程
  當 DNS 客戶(hù)端需要查找程序中使用的名稱(chēng)時(shí),它會(huì )查詢(xún)本地 DNS 服務(wù)器來(lái)解析該名稱(chēng)??蛻?hù)端發(fā)送的每個(gè)查詢(xún)消息都收錄 3 條信息,用于指定服務(wù)器應回答的問(wèn)題。
  ● 指定的 DNS 域名,表示為完全限定域名 (FQDN)。
  ● 指定查詢(xún)類(lèi)型,可以按類(lèi)型指定資源記錄,也可以作為特殊類(lèi)型的查詢(xún)操作。
  ● DNS 域名的指定類(lèi)別。
  對于 DNS 服務(wù)器,應始終將其指定為 Internet 類(lèi)別。例如,指定的名稱(chēng)可以是計算機的全限定域名,例如,指定的查詢(xún)類(lèi)型用于通過(guò)該名稱(chēng)搜索地址資源記錄。
  DNS 查詢(xún)以多種不同的方式進(jìn)行解析??蛻?hù)端有時(shí)還可以使用從先前查詢(xún)中獲得的緩存信息來(lái)就地回答查詢(xún)。 DNS 服務(wù)器可以使用自己的資源記錄信息緩存來(lái)回答查詢(xún),或者可以代表請求客戶(hù)端查詢(xún)或聯(lián)系另一個(gè) DNS 服務(wù)器以完全解析名稱(chēng),然后將答案返回給客戶(hù)端。這個(gè)過(guò)程稱(chēng)為遞歸。
  或者,客戶(hù)端本身可能會(huì )嘗試聯(lián)系另一個(gè) DNS 服務(wù)器來(lái)解析名稱(chēng)。如果客戶(hù)端這樣做,它會(huì )根據服務(wù)器的回答使用單獨和附加的查詢(xún),這個(gè)過(guò)程稱(chēng)為迭代,即DNS服務(wù)器之間的交互查詢(xún)是一個(gè)迭代查詢(xún)。
  DNS查詢(xún)流程如下圖所示。
  
  1、在瀏覽器中輸入域名,操作系統會(huì )先檢查本地hosts文件是否有這個(gè)URL映射關(guān)系。如果是,會(huì )先調用IP地址映射,完成域名解析。
  2、如果hosts中沒(méi)有這個(gè)域名的映射,查找本地DNS解析器緩存,看是否有這個(gè)URL的映射關(guān)系,如果有,直接返回補全域名稱(chēng)解析。
  3、如果主機和本地DNS解析器緩存之間沒(méi)有對應的URL映射,則會(huì )先找到TCP/ip參數中設置的首選DNS服務(wù)器。這里我們稱(chēng)之為本地 DNS 服務(wù)器。本服務(wù)器接收到查詢(xún)時(shí),如果要查詢(xún)的域名收錄在本地配置區資源中,則將解析結果返回給客戶(hù)端完成域名解析,具有權威性。
  4、如果要查詢(xún)的域名不是本地DNS服務(wù)器解析的,但是服務(wù)器已經(jīng)緩存了URL映射關(guān)系,則調用IP地址映射完成域名解析,不是權威。
  5、如果本地DNS服務(wù)器的本地區域文件和緩存解析無(wú)效,則根據本地DNS服務(wù)器的設置(是否設置轉發(fā)器)進(jìn)行查詢(xún)。如果不使用轉發(fā)方式,本地DNS會(huì )向13根DNS發(fā)送請求,根DNS服務(wù)器收到請求后,判斷誰(shuí)有權管理這個(gè)域名(.com),并返回一個(gè)IP負責頂級域名服務(wù)器。本地DNS服務(wù)器收到IP信息后,會(huì )聯(lián)系負責.com域的服務(wù)器。負責.com域的服務(wù)器收到請求后,如果不能自行解析,就會(huì )找下一級的DNS服務(wù)器地址()管理.com域到本地DNS服務(wù)器。當本地DNS服務(wù)器收到這個(gè)地址后,會(huì )找到域服務(wù)器,重復以上動(dòng)作,查詢(xún)直到找到主機。
  6、如果使用轉發(fā)方式,DNS服務(wù)器會(huì )將請求轉發(fā)給上級DNS服務(wù)器進(jìn)行解析。如果上級服務(wù)器無(wú)法解析,或者找到根 DNS 或 將傳輸請求轉發(fā)給上級,循環(huán)往復。無(wú)論本地DNS服務(wù)器是使用轉發(fā)還是root提示,最終都會(huì )將結果返回給本地DNS服務(wù)器,再由DNS服務(wù)器返回給客戶(hù)端。
  從客戶(hù)端到本地DNS服務(wù)器是遞歸查詢(xún),DNS服務(wù)器之間的交互查詢(xún)是迭代查詢(xún)。
  
  附錄:
  本地DNS配置轉發(fā)和未配置轉發(fā)包分析
  新建一個(gè)DNS,這里就不介紹如何搭建了,看我上一篇博文《在Win2003中安裝bind [部署智能DNS]》
  1、DNS 服務(wù)器未設置轉發(fā)
  在192.168.145.228服務(wù)器上安裝wireshark軟件,打開(kāi),設置數據包為UDP過(guò)濾,在192.16< @8.145.12 使用nslookup命令查詢(xún)客戶(hù)端,立即可以看到本地DNS服務(wù)器直接查看全球13個(gè)根域中的一部分,然后一步步解析。直到找到對應的IP為220.181.118.87。
  本地DNS服務(wù)器拿到IP后,將IP返回給192.168.145.12客戶(hù)端完成解析。
  
  2、DNS 服務(wù)器集轉發(fā)
  
  由于第一步驗證時(shí)使用了域名,有緩存,為了不被前面的實(shí)驗干擾,我們設置為192.168. 145.12 在客戶(hù)端 nslookup 上。從圖中本地DNS將請求轉發(fā)到192.168.133.10服務(wù)器,133.10服務(wù)器將獲取到的IP返回給本地DNS,然后本地 DNS 將 IP 告訴 DNS 客戶(hù)端完成解析。
  
  本文來(lái)自《系統網(wǎng)絡(luò )運維》博客,請務(wù)必保留此出處 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統(DNS原理及其解析過(guò)程精彩剖析大部分域名)
  DNS原理及其解析過(guò)程
  精彩分析
  大部分網(wǎng)絡(luò )通信都是基于TCP/IP的,而TCP/IP是基于IP地址的,所以計算機在網(wǎng)絡(luò )上通信時(shí),只能識別“202.96. 13 4.133”,但不是域名。我們不記得有超過(guò)10個(gè)IP地址的網(wǎng)站,所以當我們訪(fǎng)問(wèn)網(wǎng)站時(shí),我們大多在瀏覽器地址欄看到想要的頁(yè)面,那是因為有一臺叫做“DNS服務(wù)器”的電腦會(huì )自動(dòng)將我們的域名“翻譯”成對應的IP地址,然后調出IP地址對應的網(wǎng)頁(yè)。
  什么是 DNS?
  DNS(域名系統)是“域名系統”的英文縮寫(xiě)。它是組織成域層次結構的計算機和網(wǎng)絡(luò )服務(wù)命名系統。它用于 TCP/IP 網(wǎng)絡(luò )。它提供的服務(wù)用于將主機名和域名轉換為 IP 地址的工作。 DNS就是這樣一個(gè)“翻譯器”,它的基本工作原理可以用下圖來(lái)表示。
  
  DNS 域名
  域名系統充當分層和分布式數據庫,收錄各種類(lèi)型的數據,包括主機名和域名。 DNS 數據庫中的名稱(chēng)形成稱(chēng)為域名稱(chēng)空間的層次樹(shù)結構。域名收錄一個(gè)以標簽分隔的點(diǎn),例如:.
  完全限定域名 (FQDN) 唯一標識主機在 DNS 層次結構樹(shù)中的位置,由以點(diǎn)分隔的主機名列表分隔,這些主機名由指定路徑從根目錄引用。下圖顯示了一個(gè)名為 im 的主機的 DNS 樹(shù)示例。主機的 FQDN 是。
  DNS域名空間結構,又稱(chēng)全限定域名:
  
  全球只有13個(gè)根域名服務(wù)器(沒(méi)有中國)
  DNS 域命名空間的組織方式
  下表描述了用于按功能描述命名空間中 DNS 域名的五個(gè)類(lèi)別,以及每種名稱(chēng)類(lèi)型的示例。
  
  頂級域也稱(chēng)為一級域,二級域也稱(chēng)為二級域,主機名也稱(chēng)為三級域。三級域是自己申請二級域后自己定義的
  根域名服務(wù)器只負責管理一級域名,一級域名服務(wù)器只負責管理二級域名,以此類(lèi)推
  DNS 和 Internet 域
  Internet 域名系統由名稱(chēng)注冊機構維護,并通過(guò)按組織和國家/地區分配頂級域在 Internet 上進(jìn)行管理。這些域符合國際標準 3166。下表顯示了為組織使用而保留的許多現有縮寫(xiě),以及兩個(gè)字母和三個(gè)字母的國家/地區縮寫(xiě)。一些常見(jiàn)的DNS域名如下:
  組織域
  
  國家或地區
  
  資源記錄
  DNS 數據庫中收錄的資源記錄 (RR)。每個(gè) RR 標識數據庫中的特定資源。我們在搭建DNS服務(wù)器的時(shí)候,經(jīng)常會(huì )用到SOA、NS、A等記錄,而在維護DNS服務(wù)器的時(shí)候,我們會(huì )用到MX、CNAME記錄。
  常見(jiàn)的RR如下圖所示:
  
  DNS服務(wù)工作流程
  當 DNS 客戶(hù)端需要查找程序中使用的名稱(chēng)時(shí),它會(huì )查詢(xún)本地 DNS 服務(wù)器來(lái)解析該名稱(chēng)??蛻?hù)端發(fā)送的每個(gè)查詢(xún)消息都收錄 3 條信息,用于指定服務(wù)器應回答的問(wèn)題。
  ● 指定的 DNS 域名,表示為完全限定域名 (FQDN)。
  ● 指定查詢(xún)類(lèi)型,可以按類(lèi)型指定資源記錄,也可以作為特殊類(lèi)型的查詢(xún)操作。
  ● DNS 域名的指定類(lèi)別。
  對于 DNS 服務(wù)器,應始終將其指定為 Internet 類(lèi)別。例如,指定的名稱(chēng)可以是計算機的全限定域名,例如,指定的查詢(xún)類(lèi)型用于通過(guò)該名稱(chēng)搜索地址資源記錄。
  DNS 查詢(xún)以多種不同的方式進(jìn)行解析??蛻?hù)端有時(shí)還可以使用從先前查詢(xún)中獲得的緩存信息來(lái)就地回答查詢(xún)。 DNS 服務(wù)器可以使用自己的資源記錄信息緩存來(lái)回答查詢(xún),或者可以代表請求客戶(hù)端查詢(xún)或聯(lián)系另一個(gè) DNS 服務(wù)器以完全解析名稱(chēng),然后將答案返回給客戶(hù)端。這個(gè)過(guò)程稱(chēng)為遞歸。
  或者,客戶(hù)端本身可能會(huì )嘗試聯(lián)系另一個(gè) DNS 服務(wù)器來(lái)解析名稱(chēng)。如果客戶(hù)端這樣做,它會(huì )根據服務(wù)器的回答使用單獨和附加的查詢(xún),這個(gè)過(guò)程稱(chēng)為迭代,即DNS服務(wù)器之間的交互查詢(xún)是一個(gè)迭代查詢(xún)。
  DNS查詢(xún)流程如下圖所示。
  
  1、在瀏覽器中輸入域名,操作系統會(huì )先檢查本地hosts文件是否有這個(gè)URL映射關(guān)系。如果是,會(huì )先調用IP地址映射,完成域名解析。
  2、如果hosts中沒(méi)有這個(gè)域名的映射,查找本地DNS解析器緩存,看是否有這個(gè)URL的映射關(guān)系,如果有,直接返回補全域名稱(chēng)解析。
  3、如果主機和本地DNS解析器緩存之間沒(méi)有對應的URL映射,則會(huì )先找到TCP/ip參數中設置的首選DNS服務(wù)器。這里我們稱(chēng)之為本地 DNS 服務(wù)器。本服務(wù)器接收到查詢(xún)時(shí),如果要查詢(xún)的域名收錄在本地配置區資源中,則將解析結果返回給客戶(hù)端完成域名解析,具有權威性。
  4、如果要查詢(xún)的域名不是本地DNS服務(wù)器解析的,但是服務(wù)器已經(jīng)緩存了URL映射關(guān)系,則調用IP地址映射完成域名解析,不是權威。
  5、如果本地DNS服務(wù)器的本地區域文件和緩存解析無(wú)效,則根據本地DNS服務(wù)器的設置(是否設置轉發(fā)器)進(jìn)行查詢(xún)。如果不使用轉發(fā)方式,本地DNS會(huì )向13根DNS發(fā)送請求,根DNS服務(wù)器收到請求后,判斷誰(shuí)有權管理這個(gè)域名(.com),并返回一個(gè)IP負責頂級域名服務(wù)器。本地DNS服務(wù)器收到IP信息后,會(huì )聯(lián)系負責.com域的服務(wù)器。負責.com域的服務(wù)器收到請求后,如果不能自行解析,就會(huì )找下一級的DNS服務(wù)器地址()管理.com域到本地DNS服務(wù)器。當本地DNS服務(wù)器收到這個(gè)地址后,會(huì )找到域服務(wù)器,重復以上動(dòng)作,查詢(xún)直到找到主機。
  6、如果使用轉發(fā)方式,DNS服務(wù)器會(huì )將請求轉發(fā)給上級DNS服務(wù)器進(jìn)行解析。如果上級服務(wù)器無(wú)法解析,或者找到根 DNS 或 將傳輸請求轉發(fā)給上級,循環(huán)往復。無(wú)論本地DNS服務(wù)器是使用轉發(fā)還是root提示,最終都會(huì )將結果返回給本地DNS服務(wù)器,再由DNS服務(wù)器返回給客戶(hù)端。
  從客戶(hù)端到本地DNS服務(wù)器是遞歸查詢(xún),DNS服務(wù)器之間的交互查詢(xún)是迭代查詢(xún)。
  
  附錄:
  本地DNS配置轉發(fā)和未配置轉發(fā)包分析
  新建一個(gè)DNS,這里就不介紹如何搭建了,看我上一篇博文《在Win2003中安裝bind [部署智能DNS]》
  1、DNS 服務(wù)器未設置轉發(fā)
  在192.168.145.228服務(wù)器上安裝wireshark軟件,打開(kāi),設置數據包為UDP過(guò)濾,在192.16< @8.145.12 使用nslookup命令查詢(xún)客戶(hù)端,立即可以看到本地DNS服務(wù)器直接查看全球13個(gè)根域中的一部分,然后一步步解析。直到找到對應的IP為220.181.118.87。
  本地DNS服務(wù)器拿到IP后,將IP返回給192.168.145.12客戶(hù)端完成解析。
  
  2、DNS 服務(wù)器集轉發(fā)
  
  由于第一步驗證時(shí)使用了域名,有緩存,為了不被前面的實(shí)驗干擾,我們設置為192.168. 145.12 在客戶(hù)端 nslookup 上。從圖中本地DNS將請求轉發(fā)到192.168.133.10服務(wù)器,133.10服務(wù)器將獲取到的IP返回給本地DNS,然后本地 DNS 將 IP 告訴 DNS 客戶(hù)端完成解析。
  
  本文來(lái)自《系統網(wǎng)絡(luò )運維》博客,請務(wù)必保留此出處

10個(gè)基于java的cms網(wǎng)站內容管理系統(銘飛MCMS(銘飛內容管理系統)的升級方案(組圖) )

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 128 次瀏覽 ? 2022-04-19 05:15 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統(銘飛MCMS(銘飛內容管理系統)的升級方案(組圖)
)
  明飛Mcms(明飛內容管理系統)是一款支持不同平臺、不同終端、支持多站點(diǎn)的內容管理系統。
  SpringMVC4+Spring4+MyBatis3+Freemarker技術(shù)架構
  基于java技術(shù)開(kāi)發(fā),繼承其強大、穩定、安全、高效、跨平臺等優(yōu)勢;
  基于標簽的網(wǎng)站,只要懂html,就可以建站;
  完全生成全站靜態(tài)頁(yè)面;
  可自定義路徑結構,全面提升頁(yè)面訪(fǎng)問(wèn)速度;
  明飛Mcms是企業(yè)成立初期很好的技術(shù)基礎框架,可以加快公司項目開(kāi)發(fā)進(jìn)度,當然也可以升級現有系統;
  個(gè)人開(kāi)發(fā)者也可以使用Mcms承接外包項目;
  JAVA初學(xué)者可以下載源碼進(jìn)行學(xué)習交流;
  開(kāi)發(fā)箱和語(yǔ)言
  特征:
  免費開(kāi)源:純Java開(kāi)發(fā),MS開(kāi)發(fā)團隊承諾永久、完整開(kāi)源Mcms內容系統;
  終端統一:明飛Mcms支持PC和MOBILE皮膚定制,使用MS Team Mobile JS插件,輕松實(shí)現手機多屏適配。想想您第一次在 PC 上發(fā)布的信息。顯示在手機上是一件多么幸福的事情,數據整合一、平臺整合一、終端整合是MS團隊一直在努力的方向;
  可擴展性:以明飛Mcms為核心,MS官網(wǎng)提供第三方插件安裝,最新插件用戶(hù)可通過(guò)更新功能獲取最新插件。同時(shí),微軟也鼓勵和支持第三方開(kāi)發(fā)者發(fā)布優(yōu)質(zhì)插件;
  更新升級:明飛Mcms提供業(yè)內最完善的升級解決方案。從此無(wú)需手動(dòng)下載復制粘貼,一切完全由MS升級插件無(wú)縫完成;
  文檔手冊:明飛不斷對外發(fā)布最新文檔,如二次開(kāi)發(fā)手冊、標簽手冊,降低用戶(hù)學(xué)習成本;
<p>站群:Mcms支持站群,只需在服務(wù)器上設置一組明飛Mcms創(chuàng )建多個(gè)網(wǎng)站,和 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統(銘飛MCMS(銘飛內容管理系統)的升級方案(組圖)
)
  明飛Mcms(明飛內容管理系統)是一款支持不同平臺、不同終端、支持多站點(diǎn)的內容管理系統。
  SpringMVC4+Spring4+MyBatis3+Freemarker技術(shù)架構
  基于java技術(shù)開(kāi)發(fā),繼承其強大、穩定、安全、高效、跨平臺等優(yōu)勢;
  基于標簽的網(wǎng)站,只要懂html,就可以建站;
  完全生成全站靜態(tài)頁(yè)面;
  可自定義路徑結構,全面提升頁(yè)面訪(fǎng)問(wèn)速度;
  明飛Mcms是企業(yè)成立初期很好的技術(shù)基礎框架,可以加快公司項目開(kāi)發(fā)進(jìn)度,當然也可以升級現有系統;
  個(gè)人開(kāi)發(fā)者也可以使用Mcms承接外包項目;
  JAVA初學(xué)者可以下載源碼進(jìn)行學(xué)習交流;
  開(kāi)發(fā)箱和語(yǔ)言
  特征:
  免費開(kāi)源:純Java開(kāi)發(fā),MS開(kāi)發(fā)團隊承諾永久、完整開(kāi)源Mcms內容系統;
  終端統一:明飛Mcms支持PC和MOBILE皮膚定制,使用MS Team Mobile JS插件,輕松實(shí)現手機多屏適配。想想您第一次在 PC 上發(fā)布的信息。顯示在手機上是一件多么幸福的事情,數據整合一、平臺整合一、終端整合是MS團隊一直在努力的方向;
  可擴展性:以明飛Mcms為核心,MS官網(wǎng)提供第三方插件安裝,最新插件用戶(hù)可通過(guò)更新功能獲取最新插件。同時(shí),微軟也鼓勵和支持第三方開(kāi)發(fā)者發(fā)布優(yōu)質(zhì)插件;
  更新升級:明飛Mcms提供業(yè)內最完善的升級解決方案。從此無(wú)需手動(dòng)下載復制粘貼,一切完全由MS升級插件無(wú)縫完成;
  文檔手冊:明飛不斷對外發(fā)布最新文檔,如二次開(kāi)發(fā)手冊、標簽手冊,降低用戶(hù)學(xué)習成本;
<p>站群:Mcms支持站群,只需在服務(wù)器上設置一組明飛Mcms創(chuàng )建多個(gè)網(wǎng)站,和

10個(gè)基于java的cms網(wǎng)站內容管理系統(10個(gè)最受歡迎的CMS系統,你知道幾個(gè)? )

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 150 次瀏覽 ? 2022-04-18 16:32 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統(10個(gè)最受歡迎的CMS系統,你知道幾個(gè)?
)
  cms是Content Management System的縮寫(xiě),意思是“內容管理系統”,有很多基于模板的優(yōu)秀設計,可以加快網(wǎng)站的開(kāi)發(fā),降低開(kāi)發(fā)成本。cms 的功能不僅限于文本處理,它還可以處理圖片、Flash 動(dòng)畫(huà)、音頻和視頻流、圖像甚至電子郵件文件。
  本文介紹了10個(gè)最流行的cms系統,它們的共同特點(diǎn)是使用Java語(yǔ)言開(kāi)發(fā)。
  1. 海象 cms
  Walrus cms 是一個(gè)易于使用且直觀(guān)的 Java 開(kāi)發(fā)的 cms 內容管理系統。Walruscms沒(méi)有提供單獨的管理界面,所有的管理操作都直接在當前頁(yè)面進(jìn)行,通過(guò)點(diǎn)擊和拖動(dòng)即可實(shí)現內容編輯。使用 Spring 框架。
  
  2. 打開(kāi)cms
  Opencms是一個(gè)專(zhuān)業(yè)級的開(kāi)源網(wǎng)站內容管理系統。Opencms有助于輕松構建和管理復雜的網(wǎng)站,無(wú)需專(zhuān)業(yè)的 HTML 知識。在使用復雜的模板引擎規劃站點(diǎn)時(shí),它提供了類(lèi)似于熟悉的辦公應用程序的所見(jiàn)即所得編輯器來(lái)幫助用戶(hù)創(chuàng )建內容。Opencms 是一個(gè)完全開(kāi)源的軟件,不需要任何許可費用。
  Opencms基于JAVA和XML語(yǔ)言技術(shù),適合完全集成到現有系統中。Opencms 可以在完全開(kāi)源的環(huán)境(例如:Linux、Apache、Tomcat、MySQL)中很好地運行。當然,它也可以在商業(yè)環(huán)境中很好地運行(例如:Windows NT、IIS、BEA Weblogic、Oracle DB)。
  
  3. 阿斯布魯
  Asbru 網(wǎng)站內容管理系統是一個(gè)功能齊全、易于使用、基于數據庫的網(wǎng)站內容管理系統(cms)。內置社區、數據庫、電子商務(wù)和統計模塊。支持多種操作系統和大部分數據庫系統;支持.NET、PHP、Java等開(kāi)發(fā)語(yǔ)言。
  
  4. 脈沖
  Pulse 是一個(gè)用 Java 開(kāi)發(fā)的 Web 應用程序框架和一個(gè)門(mén)戶(hù)解決方案,它提供了易于使用和可擴展的基于瀏覽器的應用程序的創(chuàng )建,例如 網(wǎng)站、門(mén)戶(hù)網(wǎng)站等。提供了一些常用的組件,如cms模塊、購物車(chē)和用戶(hù)管理模塊。
  
  5. 木蘭
  Magnolia 是一個(gè)基于 Java 的開(kāi)源 Web 內容管理系統(cms),建立在 Java 內容知識庫標準(JSR-170) 之上。Magnolia 支持 14 種語(yǔ)言,包括英文、中文、支持本地搜索,基于XML的導入/導出,跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的War文件可以部署到任何J2EE容器中,最新版本還增加了數字媒體的在線(xiàn)編輯。
  在線(xiàn)演示:
  
  6. 網(wǎng)格cms
  Meshcms是一個(gè)用java編寫(xiě)的在線(xiàn)編輯系統,具有cms中收錄的一系列特性。但它以一種非常傳統的方式實(shí)現:如果頁(yè)面是 html 文檔,Meshcms 被認為是一種快速編輯網(wǎng)頁(yè)、管理文件和創(chuàng )建一些常用組件如:菜單、子菜單表單的方法, mail 表格、相冊等的在線(xiàn)工具。
  7. 信息膠
  infoglue 是一個(gè)完全用 Java 開(kāi)發(fā)的高級、可擴展和健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  
  8. JadaSite
  用Java開(kāi)發(fā)的一個(gè)開(kāi)源且易于使用的內容管理系統和電子商務(wù)系統
  
  9. 艾尼克 cms
  Enonic cms 是一個(gè)完整的軟件平臺,包括門(mén)戶(hù)網(wǎng)站,通過(guò)各種數字渠道和內容管理系統呈現專(zhuān)門(mén)為大中型組織定義的網(wǎng)絡(luò )策略。
  
  10. 阿帕奇萊尼亞
  Apache Lenya 是一個(gè)開(kāi)源的 Java 內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
   查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統(10個(gè)最受歡迎的CMS系統,你知道幾個(gè)?
)
  cms是Content Management System的縮寫(xiě),意思是“內容管理系統”,有很多基于模板的優(yōu)秀設計,可以加快網(wǎng)站的開(kāi)發(fā),降低開(kāi)發(fā)成本。cms 的功能不僅限于文本處理,它還可以處理圖片、Flash 動(dòng)畫(huà)、音頻和視頻流、圖像甚至電子郵件文件。
  本文介紹了10個(gè)最流行的cms系統,它們的共同特點(diǎn)是使用Java語(yǔ)言開(kāi)發(fā)。
  1. 海象 cms
  Walrus cms 是一個(gè)易于使用且直觀(guān)的 Java 開(kāi)發(fā)的 cms 內容管理系統。Walruscms沒(méi)有提供單獨的管理界面,所有的管理操作都直接在當前頁(yè)面進(jìn)行,通過(guò)點(diǎn)擊和拖動(dòng)即可實(shí)現內容編輯。使用 Spring 框架。
  
  2. 打開(kāi)cms
  Opencms是一個(gè)專(zhuān)業(yè)級的開(kāi)源網(wǎng)站內容管理系統。Opencms有助于輕松構建和管理復雜的網(wǎng)站,無(wú)需專(zhuān)業(yè)的 HTML 知識。在使用復雜的模板引擎規劃站點(diǎn)時(shí),它提供了類(lèi)似于熟悉的辦公應用程序的所見(jiàn)即所得編輯器來(lái)幫助用戶(hù)創(chuàng )建內容。Opencms 是一個(gè)完全開(kāi)源的軟件,不需要任何許可費用。
  Opencms基于JAVA和XML語(yǔ)言技術(shù),適合完全集成到現有系統中。Opencms 可以在完全開(kāi)源的環(huán)境(例如:Linux、Apache、Tomcat、MySQL)中很好地運行。當然,它也可以在商業(yè)環(huán)境中很好地運行(例如:Windows NT、IIS、BEA Weblogic、Oracle DB)。
  
  3. 阿斯布魯
  Asbru 網(wǎng)站內容管理系統是一個(gè)功能齊全、易于使用、基于數據庫的網(wǎng)站內容管理系統(cms)。內置社區、數據庫、電子商務(wù)和統計模塊。支持多種操作系統和大部分數據庫系統;支持.NET、PHP、Java等開(kāi)發(fā)語(yǔ)言。
  
  4. 脈沖
  Pulse 是一個(gè)用 Java 開(kāi)發(fā)的 Web 應用程序框架和一個(gè)門(mén)戶(hù)解決方案,它提供了易于使用和可擴展的基于瀏覽器的應用程序的創(chuàng )建,例如 網(wǎng)站、門(mén)戶(hù)網(wǎng)站等。提供了一些常用的組件,如cms模塊、購物車(chē)和用戶(hù)管理模塊。
  
  5. 木蘭
  Magnolia 是一個(gè)基于 Java 的開(kāi)源 Web 內容管理系統(cms),建立在 Java 內容知識庫標準(JSR-170) 之上。Magnolia 支持 14 種語(yǔ)言,包括英文、中文、支持本地搜索,基于XML的導入/導出,跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的War文件可以部署到任何J2EE容器中,最新版本還增加了數字媒體的在線(xiàn)編輯。
  在線(xiàn)演示:
  
  6. 網(wǎng)格cms
  Meshcms是一個(gè)用java編寫(xiě)的在線(xiàn)編輯系統,具有cms中收錄的一系列特性。但它以一種非常傳統的方式實(shí)現:如果頁(yè)面是 html 文檔,Meshcms 被認為是一種快速編輯網(wǎng)頁(yè)、管理文件和創(chuàng )建一些常用組件如:菜單、子菜單表單的方法, mail 表格、相冊等的在線(xiàn)工具。
  7. 信息膠
  infoglue 是一個(gè)完全用 Java 開(kāi)發(fā)的高級、可擴展和健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  
  8. JadaSite
  用Java開(kāi)發(fā)的一個(gè)開(kāi)源且易于使用的內容管理系統和電子商務(wù)系統
  
  9. 艾尼克 cms
  Enonic cms 是一個(gè)完整的軟件平臺,包括門(mén)戶(hù)網(wǎng)站,通過(guò)各種數字渠道和內容管理系統呈現專(zhuān)門(mén)為大中型組織定義的網(wǎng)絡(luò )策略。
  
  10. 阿帕奇萊尼亞
  Apache Lenya 是一個(gè)開(kāi)源的 Java 內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
  

10個(gè)基于java的cms網(wǎng)站內容管理系統(一個(gè)基于Java的CMS系統就是合適的網(wǎng)站CMS)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 116 次瀏覽 ? 2022-04-17 13:29 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統(一個(gè)基于Java的CMS系統就是合適的網(wǎng)站CMS)
  cms概述
  對于網(wǎng)站cms 系統,基于PHP 的系統是主流。例如,Drupal/Joomla 是各種主流虛擬機提供商的標準配置,被廣泛使用。
  但如果您有一個(gè) Java 團隊,或者項目目標是構建一個(gè)供企業(yè) Web 使用的內容管理系統,那么基于 Java 的 cms系統是合適的。
  基于PHP的cms系統和Javacms,有一個(gè)顯著(zhù)的區別,
  基于Java的cms通常在JCR規范上構建內容,如Jackrabbit、ModeShape等
  而 PHP 的 cms 是直接基于 RDBMS 規范構建的,主要基于 MySQL。一般來(lái)說(shuō),Java 在內容管理方面更加面向對象。
  1.海象
  一個(gè)基于Spring框架的cms,無(wú)需單獨后臺,管理員登錄后直接編輯首頁(yè),所見(jiàn)即所得,還有與Jetty捆綁的發(fā)布包。
  2.木蘭
  比較成熟的cms系統,文檔比較詳細,發(fā)布包捆綁Tomcat,響應式設計,支持PC端和移動(dòng)端,內容架構在Jackrabbit上。
  安裝包分為公共實(shí)例和創(chuàng )作實(shí)例,即網(wǎng)站前后端內容管理。一個(gè)創(chuàng )作實(shí)例可以支持多個(gè)公共實(shí)例。
  提供多種頁(yè)面模板,分級內容管理,強大的可視化編輯功能,完整的訪(fǎng)問(wèn)控制(ACL)實(shí)現。
  Magnolia 在網(wǎng)站內容管理功能方面很棒,但架構有點(diǎn)過(guò)時(shí)。
  后臺頁(yè)面編輯界面:
  
  背景文章編輯界面:
  
  3.賈希亞
  功能齊全,支持PC端、移動(dòng)端等多種顯示渠道,響應式設計,這里和Drupal做個(gè)對比文章
  ~mrudula/Talloju_690.pdf
  但是,訪(fǎng)問(wèn)在線(xiàn)文檔很慢(訪(fǎng)問(wèn)時(shí)間2013.07.01)
  4.河馬
  提供網(wǎng)站前端在線(xiàn)demo,后端管理demo需要郵箱注冊,麻煩,企業(yè)級應用質(zhì)量開(kāi)源項目,同時(shí)支持PC端和移動(dòng)端。
  通過(guò)將表示層與內容和內容上下文分離的架構設計,實(shí)現了多渠道的內容發(fā)布。
  5. 點(diǎn)cms
  提供完整的前后端在線(xiàn)演示,基于SSH架構,強大靈活的后臺管理功能
  結論
  如果你更喜歡 Spring 的框架,那么 dotcms/WALRUS 是首選,如果你考慮到功能性、可用性和易于安裝,那么 Magnolia 是首選。
  通過(guò) iefreer 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統(一個(gè)基于Java的CMS系統就是合適的網(wǎng)站CMS)
  cms概述
  對于網(wǎng)站cms 系統,基于PHP 的系統是主流。例如,Drupal/Joomla 是各種主流虛擬機提供商的標準配置,被廣泛使用。
  但如果您有一個(gè) Java 團隊,或者項目目標是構建一個(gè)供企業(yè) Web 使用的內容管理系統,那么基于 Java 的 cms系統是合適的。
  基于PHP的cms系統和Javacms,有一個(gè)顯著(zhù)的區別,
  基于Java的cms通常在JCR規范上構建內容,如Jackrabbit、ModeShape等
  而 PHP 的 cms 是直接基于 RDBMS 規范構建的,主要基于 MySQL。一般來(lái)說(shuō),Java 在內容管理方面更加面向對象。
  1.海象
  一個(gè)基于Spring框架的cms,無(wú)需單獨后臺,管理員登錄后直接編輯首頁(yè),所見(jiàn)即所得,還有與Jetty捆綁的發(fā)布包。
  2.木蘭
  比較成熟的cms系統,文檔比較詳細,發(fā)布包捆綁Tomcat,響應式設計,支持PC端和移動(dòng)端,內容架構在Jackrabbit上。
  安裝包分為公共實(shí)例和創(chuàng )作實(shí)例,即網(wǎng)站前后端內容管理。一個(gè)創(chuàng )作實(shí)例可以支持多個(gè)公共實(shí)例。
  提供多種頁(yè)面模板,分級內容管理,強大的可視化編輯功能,完整的訪(fǎng)問(wèn)控制(ACL)實(shí)現。
  Magnolia 在網(wǎng)站內容管理功能方面很棒,但架構有點(diǎn)過(guò)時(shí)。
  后臺頁(yè)面編輯界面:
  
  背景文章編輯界面:
  
  3.賈希亞
  功能齊全,支持PC端、移動(dòng)端等多種顯示渠道,響應式設計,這里和Drupal做個(gè)對比文章
  ~mrudula/Talloju_690.pdf
  但是,訪(fǎng)問(wèn)在線(xiàn)文檔很慢(訪(fǎng)問(wèn)時(shí)間2013.07.01)
  4.河馬
  提供網(wǎng)站前端在線(xiàn)demo,后端管理demo需要郵箱注冊,麻煩,企業(yè)級應用質(zhì)量開(kāi)源項目,同時(shí)支持PC端和移動(dòng)端。
  通過(guò)將表示層與內容和內容上下文分離的架構設計,實(shí)現了多渠道的內容發(fā)布。
  5. 點(diǎn)cms
  提供完整的前后端在線(xiàn)演示,基于SSH架構,強大靈活的后臺管理功能
  結論
  如果你更喜歡 Spring 的框架,那么 dotcms/WALRUS 是首選,如果你考慮到功能性、可用性和易于安裝,那么 Magnolia 是首選。
  通過(guò) iefreer

近期發(fā)布:10 個(gè)最受歡迎的 Java 開(kāi)發(fā)的 CMS 系統(國外)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 446 次瀏覽 ? 2022-09-24 17:10 ? 來(lái)自相關(guān)話(huà)題

  近期發(fā)布:10 個(gè)最受歡迎的 Java 開(kāi)發(fā)的 CMS 系統(國外)
  cms是Content Management System的縮寫(xiě),意思是“內容管理系統”,它有很多基于模板的優(yōu)秀設計,可以加快網(wǎng)站的開(kāi)發(fā),降低開(kāi)發(fā)成本。 cms的能力不僅限于文本處理,它還可以處理圖片、Flash動(dòng)畫(huà)、音視頻流、圖像甚至電子郵件文件。
  本文介紹了 10 個(gè)最流行的 cms 系統,它們都是用 Java 語(yǔ)言開(kāi)發(fā)的。
  1.海象cms
  Walrus cms 是一個(gè)易于使用且直觀(guān)的 Java 開(kāi)發(fā)的 cms 內容管理系統。 Walruscms沒(méi)有提供單獨的管理界面,所有的管理操作都直接在當前頁(yè)面進(jìn)行,通過(guò)點(diǎn)擊和拖動(dòng)即可實(shí)現內容編輯。使用 Spring 框架。
  2.打開(kāi)cms
  Opencms是一個(gè)專(zhuān)業(yè)級的開(kāi)源網(wǎng)站內容管理系統。 Opencms有助于輕松構建和管理復雜的網(wǎng)站,無(wú)需專(zhuān)業(yè)的 HTML 知識。在使用復雜的模板引擎規劃站點(diǎn)時(shí),它提供了類(lèi)似于熟悉的辦公應用程序的所見(jiàn)即所得編輯器來(lái)幫助用戶(hù)創(chuàng )建內容。 Opencms 是一個(gè)完全開(kāi)源的軟件,不需要任何許可費用。
  Opencms基于JAVA和XML語(yǔ)言技術(shù),適合完全集成到現有系統中。 Opencms 可以在完全開(kāi)源的環(huán)境(例如:Linux、Apache、Tomcat、MySQL)中很好地運行。當然,它也可以在商業(yè)環(huán)境中很好地運行(例如:Windows NT、IIS、BEA Weblogic、Oracle DB)。
  3.阿斯布魯
  Asbru 網(wǎng)站內容管理系統是一個(gè)功能齊全、易于使用、基于數據庫的網(wǎng)站內容管理系統(cms)。內置社區、數據庫、電子商務(wù)和統計模塊。支持多種操作系統和大部分數據庫系統;支持.NET、PHP、Java等開(kāi)發(fā)語(yǔ)言。
  
  4.脈沖
  Pulse 是一個(gè)用 Java 開(kāi)發(fā)的 Web 應用程序框架和一個(gè)門(mén)戶(hù)解決方案,它提供了易于使用和可擴展的基于瀏覽器的應用程序的創(chuàng )建,例如 網(wǎng)站、門(mén)戶(hù)等。提供了一些常用的組件,如cms模塊、購物車(chē)、用戶(hù)管理模塊等。
  5.木蘭
  Magnolia 是一個(gè)基于 Java 的開(kāi)源 Web 內容管理系統(cms),建立在 Java 內容知識庫標準(JSR-170) 之上。Magnolia 支持包括英語(yǔ)和Chinese) 語(yǔ)言,支持本地搜索、基于 XML 的導入/導出、跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的 War 文件可以部署到任何 J2EE 容器。最新版本還增加了數字媒體的在線(xiàn)編輯功能。
  在線(xiàn)演示:
  6.網(wǎng)格cms
  Meshcms是一個(gè)用java編寫(xiě)的在線(xiàn)編輯系統。它有一系列收錄在 cms 中的特性。但是它的實(shí)現方式很傳統:如果頁(yè)面以html文檔的形式存儲,一些附加的特性是基于文檔的,不需要數據庫。 Meshcms被認為是一個(gè)快速編輯網(wǎng)頁(yè),管理文件,以及創(chuàng )建一些常用的組件如菜單、子菜單表單、郵寄表單、相冊等在線(xiàn)工具。
  7.Infoglue
  
  infoglue 是一個(gè)完全用 Java 開(kāi)發(fā)的高級、可擴展和健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  8.JadaSite
  用Java開(kāi)發(fā)的一個(gè)開(kāi)源且易于使用的內容管理系統和電子商務(wù)系統
  9.Enoniccms
  Enonic cms 是一個(gè)完整的軟件平臺,包括 Portal網(wǎng)站,通過(guò)各種數字渠道和內容管理系統呈現專(zhuān)門(mén)為大中型組織定義的網(wǎng)絡(luò )策略。
  10.ApacheLenya
  Apache Lenya 是一個(gè)開(kāi)源的 java 內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
  文:開(kāi)源中國
  最佳實(shí)踐:18個(gè)Java開(kāi)源CMS系統一覽
  尋找313網(wǎng)站建設者并招募經(jīng)銷(xiāo)商
  核心提示:Love Bar 在之前的博文中介紹了基于 ASP 和 PHP 的開(kāi)源 cms 程序列表。今天,為網(wǎng)友們獻上18款Java開(kāi)源cms系統盛宴,款待網(wǎng)友。愛(ài)。
  Love Bar 在之前的博文中介紹了基于 ASP 和 PHP 的開(kāi)源 cms 程序列表。今天為廣大網(wǎng)友獻上18場(chǎng)Java開(kāi)源cms系統盛宴,享受網(wǎng)友們的喜愛(ài)。
  1.信息膠
  infoglue 是一個(gè)完全用 Java 開(kāi)發(fā)的高級、可擴展和健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  項目主頁(yè):
  2.木蘭
  Magnolia 是一個(gè)基于 Java 的開(kāi)源 Web 內容管理系統(cms),建立在 Java 內容知識庫標準(JSR-170).Magnolia 支持包括英語(yǔ)和Chinese) 語(yǔ)言,支持本地搜索、基于 XML 的導入/導出、跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的 War 文件可以部署到任何 J2EE 容器。最新版本還增加了數字媒體的在線(xiàn)編輯。
  項目主頁(yè):
  3.打開(kāi)cms
  Opencms 是用Java 編寫(xiě)的J2EE 產(chǎn)品。它與 Tomcat 捆綁在一起。但也可以使用 ATG Dynamo、WebLogic 和 WebSphere。 Opencms 支持各種 RDBMS 來(lái)存儲內容,包括 Oracle、SQL Server、Sybase 和 mySQL。新版本提供了新的模板引擎、JSP 支持、新的連接管理系統,并提高了穩定性。
  項目主頁(yè):
  4.JBoss 核彈
  Nukes for JBoss 是一個(gè)基于 J2EE 架構的完整內容管理系統。它收錄高級用戶(hù)組管理、安全規則等組件。直到運行時(shí)才部署這些組件。
  項目主頁(yè):? module=html&op=userdisplay&id=developers/projects/nukes/index
  5.eAdmin/OWX
  
  基于java/jsp的SiteEditor、cms、列表生成器等開(kāi)源軟件。包括:模塊、XML 配置、Struts、自己的 API、組件、所見(jiàn)即所得、多語(yǔ)言、多用戶(hù)、基于 Web 的管理器。
  項目主頁(yè):
  6.Apache Lenya
  Apache Lenya 是一個(gè)開(kāi)源的 java 內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
  項目主頁(yè):
  7.科法克斯
  Cofax 基于 Java/XMLcms。它是由 Kinight Ridder 開(kāi)發(fā)的,旨在促進(jìn)其新聞的管理網(wǎng)站。
  項目主頁(yè):
  8.網(wǎng)絡(luò )編輯器
  webEditor 是專(zhuān)門(mén)論壇的管理系統網(wǎng)站。使用繭作為機制。
  項目主頁(yè):
  9.MMBase
  MMBase是基于MPL的開(kāi)源cms,方便信息發(fā)布和維護,包括新聞發(fā)布、論壇、聊天室等模塊,但我個(gè)人認為這個(gè)項目最大的優(yōu)勢在于豐富的文檔,在開(kāi)源項目中是難得一見(jiàn)的地方。
  項目主頁(yè):
  10.離子
  ion 是一個(gè)基于最新技術(shù)的簡(jiǎn)單而強大的內容管理系統。它完全符合 J2EE 標準并使用 XML 來(lái)定義內容結構。使用XSL將內容轉換成各種格式如:HTML、XML、PDF、TXT等,并使用JSTL作為模板系統。
  項目主頁(yè):
  
  11.賈希亞
  Jahia 發(fā)布了 Jahia 內容集成管理系統cms 和它工作的門(mén)戶(hù)服務(wù)器。此版本包括一個(gè)功能齊全的搜索引擎、一個(gè)輕量級的文檔管理系統(支持 WebDAV)和一些協(xié)作應用程序門(mén)戶(hù)(討論組、WebMail、ToDo List、Timesheet...)
  項目主頁(yè):
  12.JetNuke
  JetNuke 是一個(gè)網(wǎng)站內容管理系統 (cms),基于 PHPNuke,但使用 Java 開(kāi)發(fā)。
  JetNuke 可免費使用且開(kāi)源(GNU 許可)。
  JetNuke 嚴格分離邏輯、數據和樣式
  7 種預定義樣式,無(wú)需復雜的配置文件,一個(gè) Web 管理。 JetNuke 可以很好地與 JForum 結合使用。
  JetNuke 使用 FCKEditor(所見(jiàn)即所得 HTML 編輯器)編輯 HTML 內容。
  項目主頁(yè):
  13.點(diǎn)cms
  dotcms 是一個(gè) 100% 免費的基于 J2EE/門(mén)戶(hù)的內容管理系統,具有許多其他 cms 所沒(méi)有的吸引人的特性。 dotcms 中使用的開(kāi)源項目和框架包括:Apache Tomcat、Liferay Enterprise Portal、Apache Struts、Hibernate ORM、Velocity Template Language、Lucene Search Engine。 dotcms 使用 Eclipse IDE 開(kāi)發(fā),使用 Velocity + Struts 作為前端,使 dotcms 易于擴展和構建。 dotcms 的許可證:Dotmarketing 公共許可證。
  項目主頁(yè):
  14.打開(kāi)編輯
  penEdit 包括三個(gè)主要模塊:Web 內容管理、電子商務(wù)和博客。 Web 內容管理包括在線(xiàn)編輯、動(dòng)態(tài)布局、拼寫(xiě)檢查(英文)、用戶(hù)管理、文檔管理、版本控制和通知工具。電子商務(wù)模塊包括在線(xiàn)產(chǎn)品目錄管理、購物車(chē)、電子支付、產(chǎn)品展示和高級產(chǎn)品搜索(使用Nutch/Lucene的網(wǎng)絡(luò )爬取和搜索功能進(jìn)行高級搜索,因此不需要數據庫功能)。博客模塊包括在線(xiàn)管理、評論、注冊和RSS/Atom引擎。 OpenEdit 使用的開(kāi)源組件有:Velocity、Dom4j、Spring、Lucene。
  項目主頁(yè): 查看全部

  近期發(fā)布:10 個(gè)最受歡迎的 Java 開(kāi)發(fā)的 CMS 系統(國外)
  cms是Content Management System的縮寫(xiě),意思是“內容管理系統”,它有很多基于模板的優(yōu)秀設計,可以加快網(wǎng)站的開(kāi)發(fā),降低開(kāi)發(fā)成本。 cms的能力不僅限于文本處理,它還可以處理圖片、Flash動(dòng)畫(huà)、音視頻流、圖像甚至電子郵件文件。
  本文介紹了 10 個(gè)最流行的 cms 系統,它們都是用 Java 語(yǔ)言開(kāi)發(fā)的。
  1.海象cms
  Walrus cms 是一個(gè)易于使用且直觀(guān)的 Java 開(kāi)發(fā)的 cms 內容管理系統。 Walruscms沒(méi)有提供單獨的管理界面,所有的管理操作都直接在當前頁(yè)面進(jìn)行,通過(guò)點(diǎn)擊和拖動(dòng)即可實(shí)現內容編輯。使用 Spring 框架。
  2.打開(kāi)cms
  Opencms是一個(gè)專(zhuān)業(yè)級的開(kāi)源網(wǎng)站內容管理系統。 Opencms有助于輕松構建和管理復雜的網(wǎng)站,無(wú)需專(zhuān)業(yè)的 HTML 知識。在使用復雜的模板引擎規劃站點(diǎn)時(shí),它提供了類(lèi)似于熟悉的辦公應用程序的所見(jiàn)即所得編輯器來(lái)幫助用戶(hù)創(chuàng )建內容。 Opencms 是一個(gè)完全開(kāi)源的軟件,不需要任何許可費用。
  Opencms基于JAVA和XML語(yǔ)言技術(shù),適合完全集成到現有系統中。 Opencms 可以在完全開(kāi)源的環(huán)境(例如:Linux、Apache、Tomcat、MySQL)中很好地運行。當然,它也可以在商業(yè)環(huán)境中很好地運行(例如:Windows NT、IIS、BEA Weblogic、Oracle DB)。
  3.阿斯布魯
  Asbru 網(wǎng)站內容管理系統是一個(gè)功能齊全、易于使用、基于數據庫的網(wǎng)站內容管理系統(cms)。內置社區、數據庫、電子商務(wù)和統計模塊。支持多種操作系統和大部分數據庫系統;支持.NET、PHP、Java等開(kāi)發(fā)語(yǔ)言。
  
  4.脈沖
  Pulse 是一個(gè)用 Java 開(kāi)發(fā)的 Web 應用程序框架和一個(gè)門(mén)戶(hù)解決方案,它提供了易于使用和可擴展的基于瀏覽器的應用程序的創(chuàng )建,例如 網(wǎng)站、門(mén)戶(hù)等。提供了一些常用的組件,如cms模塊、購物車(chē)、用戶(hù)管理模塊等。
  5.木蘭
  Magnolia 是一個(gè)基于 Java 的開(kāi)源 Web 內容管理系統(cms),建立在 Java 內容知識庫標準(JSR-170) 之上。Magnolia 支持包括英語(yǔ)和Chinese) 語(yǔ)言,支持本地搜索、基于 XML 的導入/導出、跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的 War 文件可以部署到任何 J2EE 容器。最新版本還增加了數字媒體的在線(xiàn)編輯功能。
  在線(xiàn)演示:
  6.網(wǎng)格cms
  Meshcms是一個(gè)用java編寫(xiě)的在線(xiàn)編輯系統。它有一系列收錄在 cms 中的特性。但是它的實(shí)現方式很傳統:如果頁(yè)面以html文檔的形式存儲,一些附加的特性是基于文檔的,不需要數據庫。 Meshcms被認為是一個(gè)快速編輯網(wǎng)頁(yè),管理文件,以及創(chuàng )建一些常用的組件如菜單、子菜單表單、郵寄表單、相冊等在線(xiàn)工具。
  7.Infoglue
  
  infoglue 是一個(gè)完全用 Java 開(kāi)發(fā)的高級、可擴展和健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  8.JadaSite
  用Java開(kāi)發(fā)的一個(gè)開(kāi)源且易于使用的內容管理系統和電子商務(wù)系統
  9.Enoniccms
  Enonic cms 是一個(gè)完整的軟件平臺,包括 Portal網(wǎng)站,通過(guò)各種數字渠道和內容管理系統呈現專(zhuān)門(mén)為大中型組織定義的網(wǎng)絡(luò )策略。
  10.ApacheLenya
  Apache Lenya 是一個(gè)開(kāi)源的 java 內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
  文:開(kāi)源中國
  最佳實(shí)踐:18個(gè)Java開(kāi)源CMS系統一覽
  尋找313網(wǎng)站建設者并招募經(jīng)銷(xiāo)商
  核心提示:Love Bar 在之前的博文中介紹了基于 ASP 和 PHP 的開(kāi)源 cms 程序列表。今天,為網(wǎng)友們獻上18款Java開(kāi)源cms系統盛宴,款待網(wǎng)友。愛(ài)。
  Love Bar 在之前的博文中介紹了基于 ASP 和 PHP 的開(kāi)源 cms 程序列表。今天為廣大網(wǎng)友獻上18場(chǎng)Java開(kāi)源cms系統盛宴,享受網(wǎng)友們的喜愛(ài)。
  1.信息膠
  infoglue 是一個(gè)完全用 Java 開(kāi)發(fā)的高級、可擴展和健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  項目主頁(yè):
  2.木蘭
  Magnolia 是一個(gè)基于 Java 的開(kāi)源 Web 內容管理系統(cms),建立在 Java 內容知識庫標準(JSR-170).Magnolia 支持包括英語(yǔ)和Chinese) 語(yǔ)言,支持本地搜索、基于 XML 的導入/導出、跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的 War 文件可以部署到任何 J2EE 容器。最新版本還增加了數字媒體的在線(xiàn)編輯。
  項目主頁(yè):
  3.打開(kāi)cms
  Opencms 是用Java 編寫(xiě)的J2EE 產(chǎn)品。它與 Tomcat 捆綁在一起。但也可以使用 ATG Dynamo、WebLogic 和 WebSphere。 Opencms 支持各種 RDBMS 來(lái)存儲內容,包括 Oracle、SQL Server、Sybase 和 mySQL。新版本提供了新的模板引擎、JSP 支持、新的連接管理系統,并提高了穩定性。
  項目主頁(yè):
  4.JBoss 核彈
  Nukes for JBoss 是一個(gè)基于 J2EE 架構的完整內容管理系統。它收錄高級用戶(hù)組管理、安全規則等組件。直到運行時(shí)才部署這些組件。
  項目主頁(yè):? module=html&op=userdisplay&id=developers/projects/nukes/index
  5.eAdmin/OWX
  
  基于java/jsp的SiteEditor、cms、列表生成器等開(kāi)源軟件。包括:模塊、XML 配置、Struts、自己的 API、組件、所見(jiàn)即所得、多語(yǔ)言、多用戶(hù)、基于 Web 的管理器。
  項目主頁(yè):
  6.Apache Lenya
  Apache Lenya 是一個(gè)開(kāi)源的 java 內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
  項目主頁(yè):
  7.科法克斯
  Cofax 基于 Java/XMLcms。它是由 Kinight Ridder 開(kāi)發(fā)的,旨在促進(jìn)其新聞的管理網(wǎng)站。
  項目主頁(yè):
  8.網(wǎng)絡(luò )編輯器
  webEditor 是專(zhuān)門(mén)論壇的管理系統網(wǎng)站。使用繭作為機制。
  項目主頁(yè):
  9.MMBase
  MMBase是基于MPL的開(kāi)源cms,方便信息發(fā)布和維護,包括新聞發(fā)布、論壇、聊天室等模塊,但我個(gè)人認為這個(gè)項目最大的優(yōu)勢在于豐富的文檔,在開(kāi)源項目中是難得一見(jiàn)的地方。
  項目主頁(yè):
  10.離子
  ion 是一個(gè)基于最新技術(shù)的簡(jiǎn)單而強大的內容管理系統。它完全符合 J2EE 標準并使用 XML 來(lái)定義內容結構。使用XSL將內容轉換成各種格式如:HTML、XML、PDF、TXT等,并使用JSTL作為模板系統。
  項目主頁(yè):
  
  11.賈希亞
  Jahia 發(fā)布了 Jahia 內容集成管理系統cms 和它工作的門(mén)戶(hù)服務(wù)器。此版本包括一個(gè)功能齊全的搜索引擎、一個(gè)輕量級的文檔管理系統(支持 WebDAV)和一些協(xié)作應用程序門(mén)戶(hù)(討論組、WebMail、ToDo List、Timesheet...)
  項目主頁(yè):
  12.JetNuke
  JetNuke 是一個(gè)網(wǎng)站內容管理系統 (cms),基于 PHPNuke,但使用 Java 開(kāi)發(fā)。
  JetNuke 可免費使用且開(kāi)源(GNU 許可)。
  JetNuke 嚴格分離邏輯、數據和樣式
  7 種預定義樣式,無(wú)需復雜的配置文件,一個(gè) Web 管理。 JetNuke 可以很好地與 JForum 結合使用。
  JetNuke 使用 FCKEditor(所見(jiàn)即所得 HTML 編輯器)編輯 HTML 內容。
  項目主頁(yè):
  13.點(diǎn)cms
  dotcms 是一個(gè) 100% 免費的基于 J2EE/門(mén)戶(hù)的內容管理系統,具有許多其他 cms 所沒(méi)有的吸引人的特性。 dotcms 中使用的開(kāi)源項目和框架包括:Apache Tomcat、Liferay Enterprise Portal、Apache Struts、Hibernate ORM、Velocity Template Language、Lucene Search Engine。 dotcms 使用 Eclipse IDE 開(kāi)發(fā),使用 Velocity + Struts 作為前端,使 dotcms 易于擴展和構建。 dotcms 的許可證:Dotmarketing 公共許可證。
  項目主頁(yè):
  14.打開(kāi)編輯
  penEdit 包括三個(gè)主要模塊:Web 內容管理、電子商務(wù)和博客。 Web 內容管理包括在線(xiàn)編輯、動(dòng)態(tài)布局、拼寫(xiě)檢查(英文)、用戶(hù)管理、文檔管理、版本控制和通知工具。電子商務(wù)模塊包括在線(xiàn)產(chǎn)品目錄管理、購物車(chē)、電子支付、產(chǎn)品展示和高級產(chǎn)品搜索(使用Nutch/Lucene的網(wǎng)絡(luò )爬取和搜索功能進(jìn)行高級搜索,因此不需要數據庫功能)。博客模塊包括在線(xiàn)管理、評論、注冊和RSS/Atom引擎。 OpenEdit 使用的開(kāi)源組件有:Velocity、Dom4j、Spring、Lucene。
  項目主頁(yè):

安全解決方案:內容管理系統 開(kāi)源 java_開(kāi)源重磅,java內容管理系統CMS

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 189 次瀏覽 ? 2022-09-24 16:22 ? 來(lái)自相關(guān)話(huà)題

  安全解決方案:內容管理系統 開(kāi)源 java_開(kāi)源重磅,java內容管理系統CMS
  我買(mǎi)的臨時(shí)空間不夠用。內存不足,老是關(guān)閉,先轉京東云,免費,不知道能免費多久。
  這是地址 2
  這是地址
  可以看一下,賬號admin密碼123不要盲目輸入,不要被屏蔽,哈哈
  基于 Walruscms 的變化。覆蓋后端的每個(gè)方法更簡(jiǎn)單。更高效。
  
  經(jīng)過(guò)幾個(gè)月的修改,現在可以實(shí)施了。沒(méi)有大錯,可以試試。
  首先轉到源代碼。代碼在淘碼上提交。這個(gè)是免費的,使用svn,只有src和WebRoot可用,可以使用svnclient作為web項目搬出去
  有任何問(wèn)題請聯(lián)系QQ群,群號為261840109
  cms賬號admin密碼123,可自行配置
  如果你能把源代碼搬出來(lái),你肯定會(huì )懂一些編程。創(chuàng )建數據庫,修改hibernate配置文件,表會(huì )自動(dòng)創(chuàng )建。其他的不具體。
  
  這是svn地址
  保持內容管理簡(jiǎn)單。只需單擊鼠標,您就可以輕松構建自己的網(wǎng)站。
  這個(gè)開(kāi)源cms使用技術(shù),SpringMVC。春季安全。 Hibernate jQuery 及其擴展,Tiles2 和 FreeMark。
  偽靜態(tài),.html請求,基于.html頁(yè)面和數據庫緩存Ehcache。為了承受高流量,可以啟用和禁用頁(yè)面緩存。
  我們先拍張照片吧??纯窗?。從csdn文章中提取了幾篇文章,包括工業(yè)、云計算、移動(dòng)等導航。導航下方有文章。有圖片,直接從csdn復制過(guò)來(lái)的。
  解決方案:微信小程序云開(kāi)發(fā)商城項目 微信支付-內容管理-后臺管理系統cms
  你能從這門(mén)課程中學(xué)到什么?
  1.微信小程序基本頁(yè)面布局和風(fēng)格美化;
  2.vant-weapp 是一個(gè)非常實(shí)用的UI組件庫,讓頁(yè)面更加美觀(guān),方便開(kāi)發(fā);
  3.小程序云開(kāi)發(fā)、云功能、云數據庫的詳細使用方法及示例應用;
  4.微信小程序自帶的內容管理CSM,可以輕松實(shí)現小程序的后臺管理系統;
  5.進(jìn)入高級小程序云數據庫查詢(xún),詳細講解聚合查詢(xún)和復雜表查詢(xún);
  6.詳細介紹商業(yè)級小程序商城項目的創(chuàng )建和申請方法(營(yíng)業(yè)執照申請也有討論);
  
  7.最易懂的微信支付實(shí)現流程,從申請微信商戶(hù)開(kāi)始;
  8.項目啟動(dòng)流程及包管理和壓縮;
  項目已上線(xiàn),可自行查看,在小程序中搜索“青春幫網(wǎng)”,即可找到對應的小程序。
  一些頁(yè)面顯示:
   查看全部

  安全解決方案:內容管理系統 開(kāi)源 java_開(kāi)源重磅,java內容管理系統CMS
  我買(mǎi)的臨時(shí)空間不夠用。內存不足,老是關(guān)閉,先轉京東云,免費,不知道能免費多久。
  這是地址 2
  這是地址
  可以看一下,賬號admin密碼123不要盲目輸入,不要被屏蔽,哈哈
  基于 Walruscms 的變化。覆蓋后端的每個(gè)方法更簡(jiǎn)單。更高效。
  
  經(jīng)過(guò)幾個(gè)月的修改,現在可以實(shí)施了。沒(méi)有大錯,可以試試。
  首先轉到源代碼。代碼在淘碼上提交。這個(gè)是免費的,使用svn,只有src和WebRoot可用,可以使用svnclient作為web項目搬出去
  有任何問(wèn)題請聯(lián)系QQ群,群號為261840109
  cms賬號admin密碼123,可自行配置
  如果你能把源代碼搬出來(lái),你肯定會(huì )懂一些編程。創(chuàng )建數據庫,修改hibernate配置文件,表會(huì )自動(dòng)創(chuàng )建。其他的不具體。
  
  這是svn地址
  保持內容管理簡(jiǎn)單。只需單擊鼠標,您就可以輕松構建自己的網(wǎng)站。
  這個(gè)開(kāi)源cms使用技術(shù),SpringMVC。春季安全。 Hibernate jQuery 及其擴展,Tiles2 和 FreeMark。
  偽靜態(tài),.html請求,基于.html頁(yè)面和數據庫緩存Ehcache。為了承受高流量,可以啟用和禁用頁(yè)面緩存。
  我們先拍張照片吧??纯窗?。從csdn文章中提取了幾篇文章,包括工業(yè)、云計算、移動(dòng)等導航。導航下方有文章。有圖片,直接從csdn復制過(guò)來(lái)的。
  解決方案:微信小程序云開(kāi)發(fā)商城項目 微信支付-內容管理-后臺管理系統cms
  你能從這門(mén)課程中學(xué)到什么?
  1.微信小程序基本頁(yè)面布局和風(fēng)格美化;
  2.vant-weapp 是一個(gè)非常實(shí)用的UI組件庫,讓頁(yè)面更加美觀(guān),方便開(kāi)發(fā);
  3.小程序云開(kāi)發(fā)、云功能、云數據庫的詳細使用方法及示例應用;
  4.微信小程序自帶的內容管理CSM,可以輕松實(shí)現小程序的后臺管理系統;
  5.進(jìn)入高級小程序云數據庫查詢(xún),詳細講解聚合查詢(xún)和復雜表查詢(xún);
  6.詳細介紹商業(yè)級小程序商城項目的創(chuàng )建和申請方法(營(yíng)業(yè)執照申請也有討論);
  
  7.最易懂的微信支付實(shí)現流程,從申請微信商戶(hù)開(kāi)始;
  8.項目啟動(dòng)流程及包管理和壓縮;
  項目已上線(xiàn),可自行查看,在小程序中搜索“青春幫網(wǎng)”,即可找到對應的小程序。
  一些頁(yè)面顯示:
  

解決方案:推薦 16 個(gè)優(yōu)秀的 Vue 開(kāi)源項目

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 173 次瀏覽 ? 2022-09-24 08:13 ? 來(lái)自相關(guān)話(huà)題

  解決方案:推薦 16 個(gè)優(yōu)秀的 Vue 開(kāi)源項目
  01cms和生成器
  頁(yè)面工具包
  Pagekit 是在 Vue.js 和 Symphony 框架的幫助下構建的開(kāi)源 cms。 cms 是模塊化的,因此您可以逐步擴展功能。 Pagekit 是在 MIT 許可下發(fā)布的,因此可以不受任何限制地自由修改、共享和重新分發(fā)。
  本產(chǎn)品具有cms的所有主要和高級功能:
  ·具有網(wǎng)站性能的可定制分析儀表板;
  ·網(wǎng)站內容編輯頁(yè)面;
  ·內置博客;
  ·HTML 和 Markdown 編輯器;
  ·文件管理器;
  ·用戶(hù)角色管理。
  還有一些對開(kāi)發(fā)人員特別有用的東西和功能。該產(chǎn)品是使用簡(jiǎn)單的 ORM、模塊化架構和包管理構建的。還有一個(gè)內置的調試工具欄,可以幫助開(kāi)發(fā)人員監控性能、路由、數據庫查詢(xún)和調試內部系統事件,擴展甚至可以添加自己的功能?;蛘?,CLI 可用于執行系統更新、安裝和卸載擴展和主題,以及直接從終端清除緩存。
  產(chǎn)品有強大的貢獻指南,團隊歡迎人們修復錯誤、翻譯或擴展cms的功能。社區并不大,但非常發(fā)達,并渴望幫助新人。
  因此,這是一個(gè)非常強大的產(chǎn)品,具有非常全面的文檔和透明的貢獻指南。開(kāi)啟通往開(kāi)源世界之路的絕佳選擇。
  02Vuepress
  VuePress 是由 Vue.js 作者 EvanYou 創(chuàng )建的基于 Vue 的靜態(tài)站點(diǎn)生成器。在 VuePress 的幫助下,網(wǎng)站使用 VueRouter、Vue 和 webpack 創(chuàng )建。最初,該產(chǎn)品是作為編寫(xiě)技術(shù)文檔的工具而創(chuàng )建的,但現在它是一個(gè)小巧、緊湊且功能強大的無(wú)頭 cms 。在 VuePress 中,您使用 Markdown 編寫(xiě)內容,然后將其轉換為預渲染的靜態(tài) HTML 文件。
  該項目有一個(gè)組織良好的捐贈指南和一個(gè)透明的工作流程。它還具有出色的問(wèn)題管理功能。社區有超過(guò) 300 名活躍的貢獻者可以為您提供支持。這是您開(kāi)始為開(kāi)源項目做貢獻的絕佳選擇。
  03Vue店面
  Vuestorefront 是一個(gè)面向電子商務(wù)的 PWA,幾乎可以連接到任何電子商務(wù)后端:它使用無(wú)頭架構。這包括流行的 BigCommerce 平臺、Magento、Shopware 等。 VueStorefront 的一些優(yōu)勢包括移動(dòng)優(yōu)先方法、服務(wù)器端渲染(有利于 SEO)和離線(xiàn)模式。
  該產(chǎn)品擁有一個(gè)發(fā)達的社區:Slack 中有大約 2,000 名開(kāi)發(fā)人員和 180 多名活躍的貢獻者。這一點(diǎn)特別有價(jià)值,因為團隊有一個(gè)清晰的路線(xiàn)圖,所以你作為貢獻者可以選擇你可以做的任務(wù)??偠灾?,這是一個(gè)非常有趣、支持和耗時(shí)的產(chǎn)品。
  04Vuegg
  Vuegg 允許您通過(guò)將組件直接拖放到可視化編輯器中并根據您的選擇移動(dòng)它們的大小來(lái)構建 Vue.js 項目。該項目的目的是將設計和原型設計合并到一個(gè)流程中。
  顯著(zhù)特點(diǎn):
  通過(guò)拖放和移動(dòng)/調整大小來(lái)模擬/恢復組件;
  ·支持標準的鼠標和鍵盤(pán)組合;
  ·響應式預覽(移動(dòng)設備、平板電腦、網(wǎng)絡(luò ));
  ·一套基本的HTML5元素;
  ·材料設計組件(vue-mdc-adapter);
  ·Vuejs源碼生成(下載.zip)。
  這個(gè)項目有一個(gè)清晰的路線(xiàn)圖,你可以直接在 Github 上看到。由于該項目相當新,因此在沒(méi)有貢獻指南的情況下仍有工作正在進(jìn)行,但您可以自由打開(kāi)任何問(wèn)題和 PR。
  05網(wǎng)格體
  Gridsome 與 VuePress 有許多相似之處,但對數據源采用了不同且非常強大的方法。它允許您在應用程序中連接和使用許多不同類(lèi)型的數據,然后將這些數據統一到單個(gè) GraphQL 層中?;旧?,Gridsome 使用 Vue 提供前端功能,使用 GraphQL 進(jìn)行數據管理。
  工作方法可以概括為以下三個(gè)步驟:
  您以 Markdown、JSON、YAML 或 CVS 數據格式提供內容,或從 WordPress 或 Drupal 等導入內容。cms;
  內容被轉換為提供集中數據管理的 GraphQL 層;
  然后使用這些數據使用 Vue 構建您的應用程序。
  在開(kāi)發(fā)方面,文檔有清晰的路線(xiàn)圖、描述良好的變更日志和貢獻指南。貢獻是一個(gè)不錯的選擇。
  06UI 組件
  驗證
  
  Vuetify 根據 MaterialDesign 規范提供了大量精心設計的組件 (80+)。 Vuetify 結合了 Vue.js 和 Material 的所有優(yōu)點(diǎn)。該框架與 RTL 和 VueCLI-3 兼容。 Vuetify 的所有組件都有很好的文檔記錄,并且有清晰的示例。它適用于 Vue 的服務(wù)器端渲染 (SSR)。 Vuetify 支持所有現代 Web 瀏覽器 - 甚至 IE11 和 Safari9+(使用多用途填充)。它還提供了現成的項目腳手架,因此您可以使用一個(gè)命令開(kāi)始構建您的 Vue.js 應用程序。
  它提供了一組基于材料設計的組件,例如:
  ·按鈕;
  ·投資;
  ·卡片;
  ·桌子,
  ·列表。
  Vuetify 背后有一個(gè)充滿(mǎn)活力的社區,有超過(guò) 500 名貢獻者創(chuàng )建了許多 Vuetify 插件。它具有成為優(yōu)秀開(kāi)源的所有主要組成部分:廣泛的文檔、貢獻指南、問(wèn)題管理。但在我們看來(lái),很難做出貢獻,因為社區已經(jīng)很大了。
  07Buefy
  Buefy 為基于 Bulma 的 Vue.js 提供輕量級 UI 組件。 Buefy 有兩個(gè)核心原則:保持簡(jiǎn)單和輕量級。這也解釋了為什么它的唯一依賴(lài)項是 Vue 和 Bulma。盡管它只有 40 多個(gè)組件,但它為您提供了移動(dòng)優(yōu)先且響應迅速的 UI 組件。
  特點(diǎn):
  ·支持MaterialDesign圖標和FontAwesome;
  ·非常輕量級,除了Vue&Bu lma沒(méi)有內部依賴(lài);
  ·大約 88KB min + gzip ;
  ·語(yǔ)義代碼輸出。
  08Vue材質(zhì)
  VUEMaterial 簡(jiǎn)單、輕巧并且完全按照 GoogleMaterial 設計規范構建。 VUE Materials 提供超過(guò) 56 種組件來(lái)構建不同類(lèi)型的布局。一件很棒的事情是材料設計框架具有非常詳盡的文檔。該框架非常輕量級,收錄完整的組件,并且完全符合 Google Material Design 指南。這種設計適合每個(gè)屏幕并支持所有現代瀏覽器。
  路線(xiàn)圖、貢獻指南、良好的文檔和變更日志都在這里。對于喜歡 UI 項目的開(kāi)發(fā)者來(lái)說(shuō),這是一個(gè)不錯的選擇。
  09 應用
  科爾
  Koel 是一種個(gè)人音樂(lè )流媒體服務(wù),您可以根據自己的需要進(jìn)行定制??蛻?hù)端是用 Vue 編寫(xiě)的,后端是用 Laravel 編寫(xiě)的。針對 Web 開(kāi)發(fā)人員,koel 使用了一些更現代的 Web 技術(shù),例如 flexbox、音頻和拖放 API 等等。
  這個(gè)項目在 Github 上很受歡迎,有 52 位貢獻者。不幸的是,沒(méi)有詳細的貢獻指南,但作者在 Github 上寫(xiě)道,您需要在提交任何內容之前打開(kāi)一個(gè)問(wèn)題。還可以選擇通過(guò) Opencollective 贊助該項目。
  我們喜歡這個(gè)項目背后的想法,即制作由社區開(kāi)發(fā)的流媒體服務(wù)。所以,如果你熱愛(ài)音樂(lè )并想提高你的 Vue 技能,貢獻是一個(gè)不錯的選擇。
  10Eagle.js
  Eagle.js 是使用 Vue 構建的強大、靈活且獨特的幻燈片系統。它允許您在演示文稿中創(chuàng )建易于重復使用的組件、幻燈片和樣式。它還支持動(dòng)畫(huà)、主題和交互式小部件,非常適合 Web 演示。微信搜索公眾號:Java后端編程,回復:java接收信息。
  您可以使用此庫做的最重要的事情之一是將您的幻燈片放在一個(gè)單獨的文件中,然后在其他幻燈片中重復使用它。您還可以將特定幻燈片中的幻燈片導入到另一個(gè)幻燈片中。創(chuàng )建者還提供了幾個(gè)模板以輕松開(kāi)始開(kāi)發(fā)。
  該項目有一個(gè)貢獻指南,其中收錄您可以提供幫助的想法。我們認為這是一個(gè)值得花時(shí)間去做的好項目:它確實(shí)幫助了很多人進(jìn)行演示。此外,在 Eagle 的幫助下開(kāi)始學(xué)習 Vue 很容易。
  11 工具包
  Nuxt.js
  Nuxt 是一個(gè)簡(jiǎn)單直接的框架,用于構建通用應用程序:服務(wù)器渲染應用程序、單頁(yè)應用程序、漸進(jìn)式 Web 應用程序,或者僅將其用作靜態(tài)站點(diǎn)生成器。它也是模塊化的,所以你可以只使用你的頁(yè)面需要的模塊。簡(jiǎn)而言之,Nuxt 讓您免于構建和優(yōu)化頁(yè)面的工作。 Nuxt.js 具有模塊化架構,有 50 多個(gè)模塊可供選擇。
  特點(diǎn):
  ·熱代碼重載;
  ·服務(wù)器端渲染或單頁(yè)應用或靜態(tài)生成,任君選擇;
  ·使用nuxt.config.js文件進(jìn)行配置;
  ·每頁(yè)代碼拆分;
  ·使用layouts/目錄自定義布局;
  ·僅加載關(guān)鍵的 CSS(頁(yè)面級別)。
  Nuxt 成為 Vue 開(kāi)發(fā)不可或缺的一部分,擁有眾多貢獻者和廣泛的社區。我們會(huì )選擇為此工具做出貢獻,因為我們知道社區將幫助您發(fā)展技能并教給您一些新知識。
  
  12類(lèi)星體
  Quasar 是一個(gè)通用的、支持 Vue 的框架,它允許您使用相同的代碼庫為不同的平臺編寫(xiě)應用程序:SPA、PWA、SSR 應用程序、混合移動(dòng)應用程序或多平臺桌面應用程序。類(lèi)星體有多達 81 個(gè)組件。
  有一個(gè)很好的文檔和許多旨在提高性能和響應能力的組件。 Quasar 默認集成了最佳實(shí)踐(HTML/CSS/JS 縮小、緩存破壞、樹(shù)抖動(dòng)、源映射、延遲加載的代碼拆分、ES6 傳輸、代碼鏈接、可訪(fǎng)問(wèn)性),因此您可以主要關(guān)注應用程序的功能。它還提供了一個(gè) cli 工具,可以輕松地為新項目構建腳手架。
  該框架有一個(gè)很棒的社區、支持聊天和論壇,以及明顯的貢獻指南。此外,您可以通過(guò)捐款來(lái)支持該工具。微信搜索公眾號:前端技術(shù)編程,回復:前端獲取信息。
  13BootstrapVue
  Boot Vue 是一個(gè)基于 Bootstrap 庫的 UI 工具包。它只是用 Vue 代碼替換常規引導組件中的 JavaScript。借助 BootstrapVue,您可以使用 Vue.js 和世界上最流行的前端 CSS 庫 - Bootstrapv4 在 Web 上構建響應式、移動(dòng)優(yōu)先和 ARIA 可訪(fǎng)問(wèn)的項目。它還可以輕松與 Nuxt.js 集成。
  文檔內容廣泛,再加上 Discord 的強大社區支持,使其成為啟動(dòng)項目和參與貢獻的安全選擇。
  14 開(kāi)發(fā)者工具
  狀態(tài)
  Statusfy 是一個(gè)完全開(kāi)源的狀態(tài)頁(yè)面系統。 Statusfy 站點(diǎn)是基于 Eleventy、Vue、Nuxt.js 和 TailwindCSS 構建的 Web 應用程序。
  這很酷,因為:
  ·Markdown 支持;
  ·這是一個(gè)漸進(jìn)式網(wǎng)絡(luò )應用程序;
  ·多語(yǔ)言支持;
  ·易于定制。
  對于社區管理和支持,該產(chǎn)品具有社區聊天、大量教程、提示、更新和博客。它還具有廣泛的文檔和貢獻指南。
  我們建議對這個(gè)項目做出貢獻,因為它是一個(gè)非常棒的工具,可以讓開(kāi)發(fā)人員的生活變得非常輕松。此外,您將熟悉 Vue 的所有主要技術(shù)。
  15Cachet
  Cachet 是一個(gè)使用 Vue 和 Bootstrap 制作的強大的開(kāi)源狀態(tài)頁(yè)面系統。它內置了 10 種語(yǔ)言。Cachet 捆綁了一個(gè)簡(jiǎn)單(但功能強大)的 JSON API。此外,使用 Cachet,您可以提前安排活動(dòng)。在儀表板中,您可以設置指標 - 一種衡量某事的方法,無(wú)論是正常運行時(shí)間、錯誤率還是完全隨機的。
  Slack 擁有一個(gè)相當大的社區,其中有非?;钴S的貢獻者。開(kāi)始為開(kāi)源社區做出貢獻是個(gè)好主意 - 活躍的社區、中型項目、好主意。
  16Vee驗證
  VeeValidate 是一個(gè)基于模板的 Vue.js 驗證框架,允許您驗證輸入并顯示錯誤。
  由于它是基于模板的,您只需為每個(gè)輸入指定在值更改時(shí)應使用哪個(gè)驗證器。將為支持的 40 多個(gè)區域自動(dòng)生成錯誤。許多規則開(kāi)箱即用。
  特點(diǎn):
  ·熟悉且易于設置的基于模板的驗證;
  ·i18n 支持和 40 多個(gè)地區的錯誤消息;
  ·異步和自定義規則支持;
  ·用 TypeScript 編寫(xiě);
  ·沒(méi)有依賴(lài)關(guān)系。
  VeeValidate 處理表單驗證的主要痛點(diǎn),并以最靈活的方式處理它們:
  ·能夠為您的用戶(hù)設計復雜的用戶(hù)體驗;
  ·最常見(jiàn)的驗證是內置的;
  ·跨領(lǐng)域驗證;
  ·用于增強表單的可訪(fǎng)問(wèn)性和樣式的實(shí)用程序;
  ·本地化內置于核心。
  團隊歡迎大家為項目做出貢獻,并擁有良好的文檔和貢獻指南。它也有一些很好的例子和一個(gè)很棒的社區。
  結論
  我們采集了 Vue 上最有用和最成熟的開(kāi)源項目。我們要再次指出:首先,在選擇受資助項目之前,請注意以下幾點(diǎn): 文檔和貢獻指南 另外,選擇您喜歡的項目,無(wú)論是否受歡迎。如果您希望我們在此集合中收錄任何其他工具,請寫(xiě)信給我們。我們希望您分享此 文章 以幫助人們了解偉大的開(kāi)源項目。
  解決方案:新網(wǎng)站怎么樣才能快速優(yōu)化排名呢?
  網(wǎng)站上線(xiàn)后,有很多問(wèn)題需要面對。同樣要注意幾個(gè)工作流程,讓新站更快參與排名。一起來(lái)看看吧。
  新網(wǎng)站如何快速優(yōu)化你的排名
  一、很多缺失的內容
  新站上線(xiàn)后,需要大量的內容。如果前期只有一個(gè)人優(yōu)化網(wǎng)站,那么需要每天定時(shí)更新內容,并確定每日更新文章的次數和頻率,讓蜘蛛根據爬取我們設置的更新時(shí)間。對于新站點(diǎn),它不僅保持更新頻率,而且穩定蜘蛛爬行。同時(shí),大量的內容需要有價(jià)值,字數必須達到一定的量,這樣蜘蛛的爬取才不會(huì )影響網(wǎng)站的總分。
  
  二、網(wǎng)站TKD 書(shū)面
  網(wǎng)站上線(xiàn)前需要完成所有網(wǎng)站頁(yè)面的TDK,除了文章通過(guò)標題自行生成,最重要的是首頁(yè)和欄目頁(yè)面,通過(guò)我們的公式關(guān)鍵詞的順序和內容,幫助用戶(hù)通過(guò)搜索快速檢索到我們的網(wǎng)站。
  新網(wǎng)站如何快速優(yōu)化你的排名
  三、網(wǎng)站代碼簡(jiǎn)潔
  
  在制定網(wǎng)站框架之前,一定要想想網(wǎng)站上線(xiàn)后每天爬取的蜘蛛是否能完全爬取到我們的網(wǎng)站內容。如果你的站點(diǎn)代碼數量很大,而且大部分內容都是采集,對整個(gè)站點(diǎn)的排名有影響。我們能做的就是推出高質(zhì)量的內容。
  四、網(wǎng)站用戶(hù)體驗
  這是網(wǎng)站上線(xiàn)后最重要的考慮,因為網(wǎng)站上線(xiàn)后,會(huì )先被搜索引擎審核。審核后,將是用戶(hù)。如果用戶(hù)不滿(mǎn)意,首先影響排名的是轉化率。在做網(wǎng)站的時(shí)候,首先要考慮用戶(hù)的想法和需求,這樣頁(yè)面的留存率才會(huì )高。
  新站上線(xiàn)后,我們能做的就是先填寫(xiě)內容,但在質(zhì)量上,我們需要保證滿(mǎn)足用戶(hù)的需求,這樣搜索引擎才會(huì )給我們一個(gè)好的排名根據總分網(wǎng)站. 查看全部

  解決方案:推薦 16 個(gè)優(yōu)秀的 Vue 開(kāi)源項目
  01cms和生成器
  頁(yè)面工具包
  Pagekit 是在 Vue.js 和 Symphony 框架的幫助下構建的開(kāi)源 cms。 cms 是模塊化的,因此您可以逐步擴展功能。 Pagekit 是在 MIT 許可下發(fā)布的,因此可以不受任何限制地自由修改、共享和重新分發(fā)。
  本產(chǎn)品具有cms的所有主要和高級功能:
  ·具有網(wǎng)站性能的可定制分析儀表板;
  ·網(wǎng)站內容編輯頁(yè)面;
  ·內置博客;
  ·HTML 和 Markdown 編輯器;
  ·文件管理器;
  ·用戶(hù)角色管理。
  還有一些對開(kāi)發(fā)人員特別有用的東西和功能。該產(chǎn)品是使用簡(jiǎn)單的 ORM、模塊化架構和包管理構建的。還有一個(gè)內置的調試工具欄,可以幫助開(kāi)發(fā)人員監控性能、路由、數據庫查詢(xún)和調試內部系統事件,擴展甚至可以添加自己的功能?;蛘?,CLI 可用于執行系統更新、安裝和卸載擴展和主題,以及直接從終端清除緩存。
  產(chǎn)品有強大的貢獻指南,團隊歡迎人們修復錯誤、翻譯或擴展cms的功能。社區并不大,但非常發(fā)達,并渴望幫助新人。
  因此,這是一個(gè)非常強大的產(chǎn)品,具有非常全面的文檔和透明的貢獻指南。開(kāi)啟通往開(kāi)源世界之路的絕佳選擇。
  02Vuepress
  VuePress 是由 Vue.js 作者 EvanYou 創(chuàng )建的基于 Vue 的靜態(tài)站點(diǎn)生成器。在 VuePress 的幫助下,網(wǎng)站使用 VueRouter、Vue 和 webpack 創(chuàng )建。最初,該產(chǎn)品是作為編寫(xiě)技術(shù)文檔的工具而創(chuàng )建的,但現在它是一個(gè)小巧、緊湊且功能強大的無(wú)頭 cms 。在 VuePress 中,您使用 Markdown 編寫(xiě)內容,然后將其轉換為預渲染的靜態(tài) HTML 文件。
  該項目有一個(gè)組織良好的捐贈指南和一個(gè)透明的工作流程。它還具有出色的問(wèn)題管理功能。社區有超過(guò) 300 名活躍的貢獻者可以為您提供支持。這是您開(kāi)始為開(kāi)源項目做貢獻的絕佳選擇。
  03Vue店面
  Vuestorefront 是一個(gè)面向電子商務(wù)的 PWA,幾乎可以連接到任何電子商務(wù)后端:它使用無(wú)頭架構。這包括流行的 BigCommerce 平臺、Magento、Shopware 等。 VueStorefront 的一些優(yōu)勢包括移動(dòng)優(yōu)先方法、服務(wù)器端渲染(有利于 SEO)和離線(xiàn)模式。
  該產(chǎn)品擁有一個(gè)發(fā)達的社區:Slack 中有大約 2,000 名開(kāi)發(fā)人員和 180 多名活躍的貢獻者。這一點(diǎn)特別有價(jià)值,因為團隊有一個(gè)清晰的路線(xiàn)圖,所以你作為貢獻者可以選擇你可以做的任務(wù)??偠灾?,這是一個(gè)非常有趣、支持和耗時(shí)的產(chǎn)品。
  04Vuegg
  Vuegg 允許您通過(guò)將組件直接拖放到可視化編輯器中并根據您的選擇移動(dòng)它們的大小來(lái)構建 Vue.js 項目。該項目的目的是將設計和原型設計合并到一個(gè)流程中。
  顯著(zhù)特點(diǎn):
  通過(guò)拖放和移動(dòng)/調整大小來(lái)模擬/恢復組件;
  ·支持標準的鼠標和鍵盤(pán)組合;
  ·響應式預覽(移動(dòng)設備、平板電腦、網(wǎng)絡(luò ));
  ·一套基本的HTML5元素;
  ·材料設計組件(vue-mdc-adapter);
  ·Vuejs源碼生成(下載.zip)。
  這個(gè)項目有一個(gè)清晰的路線(xiàn)圖,你可以直接在 Github 上看到。由于該項目相當新,因此在沒(méi)有貢獻指南的情況下仍有工作正在進(jìn)行,但您可以自由打開(kāi)任何問(wèn)題和 PR。
  05網(wǎng)格體
  Gridsome 與 VuePress 有許多相似之處,但對數據源采用了不同且非常強大的方法。它允許您在應用程序中連接和使用許多不同類(lèi)型的數據,然后將這些數據統一到單個(gè) GraphQL 層中?;旧?,Gridsome 使用 Vue 提供前端功能,使用 GraphQL 進(jìn)行數據管理。
  工作方法可以概括為以下三個(gè)步驟:
  您以 Markdown、JSON、YAML 或 CVS 數據格式提供內容,或從 WordPress 或 Drupal 等導入內容。cms;
  內容被轉換為提供集中數據管理的 GraphQL 層;
  然后使用這些數據使用 Vue 構建您的應用程序。
  在開(kāi)發(fā)方面,文檔有清晰的路線(xiàn)圖、描述良好的變更日志和貢獻指南。貢獻是一個(gè)不錯的選擇。
  06UI 組件
  驗證
  
  Vuetify 根據 MaterialDesign 規范提供了大量精心設計的組件 (80+)。 Vuetify 結合了 Vue.js 和 Material 的所有優(yōu)點(diǎn)。該框架與 RTL 和 VueCLI-3 兼容。 Vuetify 的所有組件都有很好的文檔記錄,并且有清晰的示例。它適用于 Vue 的服務(wù)器端渲染 (SSR)。 Vuetify 支持所有現代 Web 瀏覽器 - 甚至 IE11 和 Safari9+(使用多用途填充)。它還提供了現成的項目腳手架,因此您可以使用一個(gè)命令開(kāi)始構建您的 Vue.js 應用程序。
  它提供了一組基于材料設計的組件,例如:
  ·按鈕;
  ·投資;
  ·卡片;
  ·桌子,
  ·列表。
  Vuetify 背后有一個(gè)充滿(mǎn)活力的社區,有超過(guò) 500 名貢獻者創(chuàng )建了許多 Vuetify 插件。它具有成為優(yōu)秀開(kāi)源的所有主要組成部分:廣泛的文檔、貢獻指南、問(wèn)題管理。但在我們看來(lái),很難做出貢獻,因為社區已經(jīng)很大了。
  07Buefy
  Buefy 為基于 Bulma 的 Vue.js 提供輕量級 UI 組件。 Buefy 有兩個(gè)核心原則:保持簡(jiǎn)單和輕量級。這也解釋了為什么它的唯一依賴(lài)項是 Vue 和 Bulma。盡管它只有 40 多個(gè)組件,但它為您提供了移動(dòng)優(yōu)先且響應迅速的 UI 組件。
  特點(diǎn):
  ·支持MaterialDesign圖標和FontAwesome;
  ·非常輕量級,除了Vue&Bu lma沒(méi)有內部依賴(lài);
  ·大約 88KB min + gzip ;
  ·語(yǔ)義代碼輸出。
  08Vue材質(zhì)
  VUEMaterial 簡(jiǎn)單、輕巧并且完全按照 GoogleMaterial 設計規范構建。 VUE Materials 提供超過(guò) 56 種組件來(lái)構建不同類(lèi)型的布局。一件很棒的事情是材料設計框架具有非常詳盡的文檔。該框架非常輕量級,收錄完整的組件,并且完全符合 Google Material Design 指南。這種設計適合每個(gè)屏幕并支持所有現代瀏覽器。
  路線(xiàn)圖、貢獻指南、良好的文檔和變更日志都在這里。對于喜歡 UI 項目的開(kāi)發(fā)者來(lái)說(shuō),這是一個(gè)不錯的選擇。
  09 應用
  科爾
  Koel 是一種個(gè)人音樂(lè )流媒體服務(wù),您可以根據自己的需要進(jìn)行定制??蛻?hù)端是用 Vue 編寫(xiě)的,后端是用 Laravel 編寫(xiě)的。針對 Web 開(kāi)發(fā)人員,koel 使用了一些更現代的 Web 技術(shù),例如 flexbox、音頻和拖放 API 等等。
  這個(gè)項目在 Github 上很受歡迎,有 52 位貢獻者。不幸的是,沒(méi)有詳細的貢獻指南,但作者在 Github 上寫(xiě)道,您需要在提交任何內容之前打開(kāi)一個(gè)問(wèn)題。還可以選擇通過(guò) Opencollective 贊助該項目。
  我們喜歡這個(gè)項目背后的想法,即制作由社區開(kāi)發(fā)的流媒體服務(wù)。所以,如果你熱愛(ài)音樂(lè )并想提高你的 Vue 技能,貢獻是一個(gè)不錯的選擇。
  10Eagle.js
  Eagle.js 是使用 Vue 構建的強大、靈活且獨特的幻燈片系統。它允許您在演示文稿中創(chuàng )建易于重復使用的組件、幻燈片和樣式。它還支持動(dòng)畫(huà)、主題和交互式小部件,非常適合 Web 演示。微信搜索公眾號:Java后端編程,回復:java接收信息。
  您可以使用此庫做的最重要的事情之一是將您的幻燈片放在一個(gè)單獨的文件中,然后在其他幻燈片中重復使用它。您還可以將特定幻燈片中的幻燈片導入到另一個(gè)幻燈片中。創(chuàng )建者還提供了幾個(gè)模板以輕松開(kāi)始開(kāi)發(fā)。
  該項目有一個(gè)貢獻指南,其中收錄您可以提供幫助的想法。我們認為這是一個(gè)值得花時(shí)間去做的好項目:它確實(shí)幫助了很多人進(jìn)行演示。此外,在 Eagle 的幫助下開(kāi)始學(xué)習 Vue 很容易。
  11 工具包
  Nuxt.js
  Nuxt 是一個(gè)簡(jiǎn)單直接的框架,用于構建通用應用程序:服務(wù)器渲染應用程序、單頁(yè)應用程序、漸進(jìn)式 Web 應用程序,或者僅將其用作靜態(tài)站點(diǎn)生成器。它也是模塊化的,所以你可以只使用你的頁(yè)面需要的模塊。簡(jiǎn)而言之,Nuxt 讓您免于構建和優(yōu)化頁(yè)面的工作。 Nuxt.js 具有模塊化架構,有 50 多個(gè)模塊可供選擇。
  特點(diǎn):
  ·熱代碼重載;
  ·服務(wù)器端渲染或單頁(yè)應用或靜態(tài)生成,任君選擇;
  ·使用nuxt.config.js文件進(jìn)行配置;
  ·每頁(yè)代碼拆分;
  ·使用layouts/目錄自定義布局;
  ·僅加載關(guān)鍵的 CSS(頁(yè)面級別)。
  Nuxt 成為 Vue 開(kāi)發(fā)不可或缺的一部分,擁有眾多貢獻者和廣泛的社區。我們會(huì )選擇為此工具做出貢獻,因為我們知道社區將幫助您發(fā)展技能并教給您一些新知識。
  
  12類(lèi)星體
  Quasar 是一個(gè)通用的、支持 Vue 的框架,它允許您使用相同的代碼庫為不同的平臺編寫(xiě)應用程序:SPA、PWA、SSR 應用程序、混合移動(dòng)應用程序或多平臺桌面應用程序。類(lèi)星體有多達 81 個(gè)組件。
  有一個(gè)很好的文檔和許多旨在提高性能和響應能力的組件。 Quasar 默認集成了最佳實(shí)踐(HTML/CSS/JS 縮小、緩存破壞、樹(shù)抖動(dòng)、源映射、延遲加載的代碼拆分、ES6 傳輸、代碼鏈接、可訪(fǎng)問(wèn)性),因此您可以主要關(guān)注應用程序的功能。它還提供了一個(gè) cli 工具,可以輕松地為新項目構建腳手架。
  該框架有一個(gè)很棒的社區、支持聊天和論壇,以及明顯的貢獻指南。此外,您可以通過(guò)捐款來(lái)支持該工具。微信搜索公眾號:前端技術(shù)編程,回復:前端獲取信息。
  13BootstrapVue
  Boot Vue 是一個(gè)基于 Bootstrap 庫的 UI 工具包。它只是用 Vue 代碼替換常規引導組件中的 JavaScript。借助 BootstrapVue,您可以使用 Vue.js 和世界上最流行的前端 CSS 庫 - Bootstrapv4 在 Web 上構建響應式、移動(dòng)優(yōu)先和 ARIA 可訪(fǎng)問(wèn)的項目。它還可以輕松與 Nuxt.js 集成。
  文檔內容廣泛,再加上 Discord 的強大社區支持,使其成為啟動(dòng)項目和參與貢獻的安全選擇。
  14 開(kāi)發(fā)者工具
  狀態(tài)
  Statusfy 是一個(gè)完全開(kāi)源的狀態(tài)頁(yè)面系統。 Statusfy 站點(diǎn)是基于 Eleventy、Vue、Nuxt.js 和 TailwindCSS 構建的 Web 應用程序。
  這很酷,因為:
  ·Markdown 支持;
  ·這是一個(gè)漸進(jìn)式網(wǎng)絡(luò )應用程序;
  ·多語(yǔ)言支持;
  ·易于定制。
  對于社區管理和支持,該產(chǎn)品具有社區聊天、大量教程、提示、更新和博客。它還具有廣泛的文檔和貢獻指南。
  我們建議對這個(gè)項目做出貢獻,因為它是一個(gè)非常棒的工具,可以讓開(kāi)發(fā)人員的生活變得非常輕松。此外,您將熟悉 Vue 的所有主要技術(shù)。
  15Cachet
  Cachet 是一個(gè)使用 Vue 和 Bootstrap 制作的強大的開(kāi)源狀態(tài)頁(yè)面系統。它內置了 10 種語(yǔ)言。Cachet 捆綁了一個(gè)簡(jiǎn)單(但功能強大)的 JSON API。此外,使用 Cachet,您可以提前安排活動(dòng)。在儀表板中,您可以設置指標 - 一種衡量某事的方法,無(wú)論是正常運行時(shí)間、錯誤率還是完全隨機的。
  Slack 擁有一個(gè)相當大的社區,其中有非?;钴S的貢獻者。開(kāi)始為開(kāi)源社區做出貢獻是個(gè)好主意 - 活躍的社區、中型項目、好主意。
  16Vee驗證
  VeeValidate 是一個(gè)基于模板的 Vue.js 驗證框架,允許您驗證輸入并顯示錯誤。
  由于它是基于模板的,您只需為每個(gè)輸入指定在值更改時(shí)應使用哪個(gè)驗證器。將為支持的 40 多個(gè)區域自動(dòng)生成錯誤。許多規則開(kāi)箱即用。
  特點(diǎn):
  ·熟悉且易于設置的基于模板的驗證;
  ·i18n 支持和 40 多個(gè)地區的錯誤消息;
  ·異步和自定義規則支持;
  ·用 TypeScript 編寫(xiě);
  ·沒(méi)有依賴(lài)關(guān)系。
  VeeValidate 處理表單驗證的主要痛點(diǎn),并以最靈活的方式處理它們:
  ·能夠為您的用戶(hù)設計復雜的用戶(hù)體驗;
  ·最常見(jiàn)的驗證是內置的;
  ·跨領(lǐng)域驗證;
  ·用于增強表單的可訪(fǎng)問(wèn)性和樣式的實(shí)用程序;
  ·本地化內置于核心。
  團隊歡迎大家為項目做出貢獻,并擁有良好的文檔和貢獻指南。它也有一些很好的例子和一個(gè)很棒的社區。
  結論
  我們采集了 Vue 上最有用和最成熟的開(kāi)源項目。我們要再次指出:首先,在選擇受資助項目之前,請注意以下幾點(diǎn): 文檔和貢獻指南 另外,選擇您喜歡的項目,無(wú)論是否受歡迎。如果您希望我們在此集合中收錄任何其他工具,請寫(xiě)信給我們。我們希望您分享此 文章 以幫助人們了解偉大的開(kāi)源項目。
  解決方案:新網(wǎng)站怎么樣才能快速優(yōu)化排名呢?
  網(wǎng)站上線(xiàn)后,有很多問(wèn)題需要面對。同樣要注意幾個(gè)工作流程,讓新站更快參與排名。一起來(lái)看看吧。
  新網(wǎng)站如何快速優(yōu)化你的排名
  一、很多缺失的內容
  新站上線(xiàn)后,需要大量的內容。如果前期只有一個(gè)人優(yōu)化網(wǎng)站,那么需要每天定時(shí)更新內容,并確定每日更新文章的次數和頻率,讓蜘蛛根據爬取我們設置的更新時(shí)間。對于新站點(diǎn),它不僅保持更新頻率,而且穩定蜘蛛爬行。同時(shí),大量的內容需要有價(jià)值,字數必須達到一定的量,這樣蜘蛛的爬取才不會(huì )影響網(wǎng)站的總分。
  
  二、網(wǎng)站TKD 書(shū)面
  網(wǎng)站上線(xiàn)前需要完成所有網(wǎng)站頁(yè)面的TDK,除了文章通過(guò)標題自行生成,最重要的是首頁(yè)和欄目頁(yè)面,通過(guò)我們的公式關(guān)鍵詞的順序和內容,幫助用戶(hù)通過(guò)搜索快速檢索到我們的網(wǎng)站。
  新網(wǎng)站如何快速優(yōu)化你的排名
  三、網(wǎng)站代碼簡(jiǎn)潔
  
  在制定網(wǎng)站框架之前,一定要想想網(wǎng)站上線(xiàn)后每天爬取的蜘蛛是否能完全爬取到我們的網(wǎng)站內容。如果你的站點(diǎn)代碼數量很大,而且大部分內容都是采集,對整個(gè)站點(diǎn)的排名有影響。我們能做的就是推出高質(zhì)量的內容。
  四、網(wǎng)站用戶(hù)體驗
  這是網(wǎng)站上線(xiàn)后最重要的考慮,因為網(wǎng)站上線(xiàn)后,會(huì )先被搜索引擎審核。審核后,將是用戶(hù)。如果用戶(hù)不滿(mǎn)意,首先影響排名的是轉化率。在做網(wǎng)站的時(shí)候,首先要考慮用戶(hù)的想法和需求,這樣頁(yè)面的留存率才會(huì )高。
  新站上線(xiàn)后,我們能做的就是先填寫(xiě)內容,但在質(zhì)量上,我們需要保證滿(mǎn)足用戶(hù)的需求,這樣搜索引擎才會(huì )給我們一個(gè)好的排名根據總分網(wǎng)站.

優(yōu)化的解決方案:高效PHP開(kāi)發(fā)人員的十大PHP開(kāi)發(fā)工具

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 187 次瀏覽 ? 2022-09-24 08:10 ? 來(lái)自相關(guān)話(huà)題

  優(yōu)化的解決方案:高效PHP開(kāi)發(fā)人員的十大PHP開(kāi)發(fā)工具
  Caption: 如何選擇最好的 PHP 開(kāi)發(fā)工具
  PHP 是用于構建 網(wǎng)站 和 Web 應用程序的最快和最廣泛使用的服務(wù)器端腳本語(yǔ)言。
  開(kāi)發(fā)人員更喜歡 PHP 或其他一些腳本語(yǔ)言(例如 Python 和 Ruby)有幾個(gè)很好的理由。PHP 有非常詳細的文檔、許多現成的腳本、龐大的社區和得到良好支持的框架。為了讓PHP開(kāi)發(fā)更容易一些,一些專(zhuān)家開(kāi)發(fā)了很多PHP開(kāi)發(fā)工具,可以提高編程效率。PHP 工具旨在提供完美的 IDE(集成開(kāi)發(fā)環(huán)境),PHP 開(kāi)發(fā)人員可以利用它高效地構建引人入勝、創(chuàng )新且功能豐富的 PHP 項目。
  當今市場(chǎng)充斥著(zhù)如此多的 PHP 開(kāi)發(fā)工具,因此選擇最好的工具可能成為一項具有挑戰性的任務(wù)。以下是我們挑選的在 Web 開(kāi)發(fā)社區中最受關(guān)注的 10 大 PHP 開(kāi)發(fā)工具。
  1. PHPStorm
  PHPStorm 輕量、快速、流暢,是 PHPer 選擇開(kāi)發(fā)工具的標準。此 PHP IDE 可與 Zend Framework、Symfony、Yii、Laravel 和 CakePHP 等絕大多數 PHP 框架以及 Drupal、Magento 和 WordPress 等流行的內容管理系統 (cms) 配合使用。
  除了代碼重構、單元測試和調試之外,IDE 還為 CSS、HTML5 和 JavaScript 等主流前端技術(shù)提供實(shí)時(shí)編輯支持。它還使開(kāi)發(fā)人員能夠與數據庫、版本控制系統、遠程部署、編寫(xiě)器、命令行工具和 REST 客戶(hù)端緊密集成。
  PHPStorm 的特點(diǎn):
  PHPStorm 的特點(diǎn):
  2. Zend Studio
  大多數 Web 開(kāi)發(fā)人員會(huì )選擇 Zend Studio 以獲得最快的速度。在 Zend Studio 中編寫(xiě)和調試代碼不需要程序員額外的工作和時(shí)間。在支持 PHP 7 的同時(shí),它通過(guò)集成 Xdebug 和 Zend Debugger 等來(lái)調試 PHP 腳本。這個(gè)功能齊全的 PHP IDE 具有一組令人興奮的功能,可以在包括云服務(wù)器在內的各種服務(wù)器上部署應用程序。Zend Studio 也可以通過(guò) Eclipse 插件進(jìn)行擴展。
  Zend Studio 特點(diǎn):
  Zend Studio 特色:
  3. NuSphere PhpED
  PhpED 是 NuSphere 提供的 PHP 專(zhuān)有集成開(kāi)發(fā)工具。此 PHP IDE 收錄高級 PHP 編輯器、Profiler、PHP 調試工具、數據庫客戶(hù)端和代碼優(yōu)化工具,為開(kāi)發(fā)人員提供了多種工具和優(yōu)化器,讓整個(gè) Web 開(kāi)發(fā)過(guò)程不再繁瑣。PhpEd 使用商用 PHP 加速器 PhpExpress 加速應用程序開(kāi)發(fā)過(guò)程。此 IDE 非常適合開(kāi)發(fā)復雜的 網(wǎng)站 和 Web 應用程序。它支持 JavaScript、HTML 和 CSS3,并廣泛支持 PHP 7.1。它的重構功能使開(kāi)發(fā)人員能夠有效地改進(jìn)代碼。PhpED 可以使用最流行的 PHP 框架,如 Laravel、Zend 和 Yii 等。
  
  PhpED 特點(diǎn):
  PhpED 專(zhuān)長(cháng):
  4. 網(wǎng)豆
  該工具具有支持多種語(yǔ)言的豐富功能。NetBeans 最初是用于 Java 開(kāi)發(fā)的,目前的版本定位是輕量級、速度更快并支持 PHP 開(kāi)發(fā)服務(wù)。它還支持對其他編程語(yǔ)言的擴展,例如 C、C++ 和 HTML5)。它支持開(kāi)發(fā)大型Web應用程序和不同的本地語(yǔ)言,如日語(yǔ)、俄語(yǔ)、英語(yǔ)、巴西葡萄牙語(yǔ)以及簡(jiǎn)體中文。
  這個(gè)開(kāi)源 PHP 開(kāi)發(fā)工具可以與所有流行的 PHP 框架一起使用,包括 Zend、Symfony 2、CakePHP、FuelPHP、Smarty 和 WordPress。
  NetBeans 功能:
  NetBeans 專(zhuān)業(yè)知識:
  5.云9
  Cloud9是AWS提供的一款開(kāi)源云IDE,為數百種編程語(yǔ)言(PHP、C、C++、JavaScript、Python等)提供開(kāi)發(fā)環(huán)境。開(kāi)發(fā)人員可以使用預配置的環(huán)境立即開(kāi)始編碼,構建具有瀏覽器兼容性測試和實(shí)時(shí)預覽等功能的 Web 應用程序,并使用協(xié)作編碼功能與同事無(wú)縫協(xié)作。
  Cloud 9 為創(chuàng )建無(wú)服務(wù)器應用程序提供了完美的體驗,能夠遠程定義資源、執行無(wú)服務(wù)器應用程序并對其進(jìn)行調試。程序員可以與同事共享開(kāi)發(fā)環(huán)境,能夠配對程序并跟蹤實(shí)時(shí)輸入。Cloud 9 確保輕松構建可在瀏覽器中編碼的無(wú)服務(wù)器應用程序。
  Cloud9 特點(diǎn):
  Cloud9 專(zhuān)長(cháng):
  6. Aptana 工作室
  Aptana Studio 是一個(gè)開(kāi)源 PHP 開(kāi)發(fā)工具,用于與各種服務(wù)器端和客戶(hù)端 Web 技術(shù)集成。PHP、Python、CSS3、Ruby on Rails、Ruby 和 HTML5 都是這些堆棧的一部分。它支持調試器和命令行界面,使 PHP 應用程序開(kāi)發(fā)更容易。它允許 PHP 程序員在同一環(huán)境中構建和測試 Web 應用程序。它帶有 SFTP、FTP 和自定義 IDE。這個(gè)強大的 Web 開(kāi)發(fā)引擎利用了 Eclipse 的靈活性,并收錄有關(guān)高級 Web 瀏覽器中每個(gè)元素的支持范圍的詳細信息。Aptana Studio 是一個(gè)高性能 PHP IDE,它收錄一系列強大的功能來(lái)提高程序員的工作效率。
  Aptana Studio 特點(diǎn):
  阿普塔納專(zhuān)長(cháng):
  7. 代碼龍蝦
  
  Codelobster Software 的 CodeLobster IDE 也是社區中最受歡迎的 PHP 開(kāi)發(fā)工具之一。它支持大多數 PHP 框架,如 Symfony、Laravel、CodeIgniter、CakePHP、Magento、Joomla 和 Drupal。CodeLobster IDE 簡(jiǎn)化了這個(gè)過(guò)程。無(wú)需記住參數、函數、屬性和標簽的名稱(chēng)——它已經(jīng)實(shí)現了 HTML、JavaScript、PHP 和 CSS 的自動(dòng)完成功能。使用其內部 PHP 調試器,您可以在本地驗證您的代碼。此外,此 PHP 工具會(huì )自動(dòng)檢測當前服務(wù)器的設置并配置相關(guān)文件以使用免費調試器。它還支持Drupal、WordPress、Magento 和Joomla 等主流cms。
  CodeLobster 特點(diǎn):
  CodeLobster 特色:
  8.崇高文本
  Sublime Text 是 PHP 開(kāi)發(fā)的領(lǐng)先測試編輯器。但它不是 IDE。通過(guò)安裝某些插件和包,您可以使其成為開(kāi)發(fā) PHP 應用程序的合適編輯器。這個(gè)跨平臺的源代碼編輯器原生支持多種編程和標記語(yǔ)言。它可以通過(guò)自定義 UI 工具包進(jìn)行高度定制。
  崇高文本功能:
  崇高文本專(zhuān)業(yè):
  9. PHP 調試欄
  PHPDebugbar 是一個(gè) PHP 調試器,可以與任何項目一起運行并顯示各種 Web 應用程序狀態(tài)的數據。這個(gè) PHP 開(kāi)發(fā)工具由兩部分組成:mainDebugBar 對象、數據采集器和渲染器。StandardDebugBar 收錄一組預配置的內置采集器。
  除了 PHP,還可以捕獲 JavaScript 和 HTML 數據。此外,PHPDebugbar 可以檢測 CSS 元素,監控網(wǎng)絡(luò )。它是 Web 應用程序分析數據的最佳選擇。您可以創(chuàng )建自己的集合以便于集成。
  PHPDebugbar 函數:
  PHPDebugbar 特色:
  10.日食
  當你搜索最好的 PHP 開(kāi)發(fā)工具時(shí),大多數搜索結果都會(huì )在他們的列表中收錄 Eclipse 編輯器,它是一個(gè)完整的開(kāi)發(fā)工具,在頂級 PHP 工具列表中絕對排名靠前。您可以從各種插件中自由選擇,從而更輕松地開(kāi)發(fā)和簡(jiǎn)化您的代碼。還可以幫助定制和擴展IDE以滿(mǎn)足項目的需要。這個(gè) PHP IDE 可以支持 GUI 和非 GUI 應用程序。這個(gè)跨平臺的 PHP 編輯器是大型 PHP 項目的理想選擇。
  日食特點(diǎn):
  日食專(zhuān)長(cháng):
  上面列出的每個(gè)工具都有自己獨特的功能,可以讓開(kāi)發(fā)人員快速輕松地創(chuàng )建 PHP網(wǎng)站 和應用程序,但是這些≈不是市場(chǎng)上唯一的開(kāi)發(fā)工具,您可以找到更多付費或免費的編輯器工具.
  解決方案:SEO(搜索引擎優(yōu)化)重點(diǎn)知識
  電商圈SEO(搜索引擎優(yōu)化)基礎知識基礎課程目錄一、SEO基本概念及模型二、搜索引擎關(guān)鍵詞三、搜索鏈接引擎四、頁(yè)面內部元素優(yōu)化五、關(guān)于百度和GOOGLE一、SEO基本概念和模型1、SEO定義2、搜索引擎(SE)工作model3、搜索引擎優(yōu)化 (SEO) 工作模型1、SEO 定義 SEO=SearchEngineOptimization 搜索引擎優(yōu)化是一種使特定頁(yè)面在搜索結果中獲得有利排名的方法。搜索引擎算法具有高度機密性,任何搜索引擎優(yōu)化都是基于猜測,需要長(cháng)期觀(guān)察、總結、預算和逐步驗證。搜索引擎優(yōu)化必須從查看者的角度考慮,因為搜索引擎算法也是為了滿(mǎn)足搜索者而設計的。 SEO工作模式我解釋??梢钥吹絊EO模型中有網(wǎng)站A和網(wǎng)站B,那么它們是如何輸入我們指定的內容的呢?哦,通過(guò)關(guān)鍵字(我稍后會(huì )談到關(guān)鍵字) 為什么圖像的中心是頁(yè)面而不是 網(wǎng)站?因為給外鏈設置關(guān)鍵詞的目的是讓用戶(hù)進(jìn)入我們希望他進(jìn)入的頁(yè)面,而不是宣傳整個(gè)網(wǎng)站,而外鏈、關(guān)鍵詞和這個(gè)頁(yè)面的內容是相關(guān)的。電子商務(wù)二、搜索引擎關(guān)鍵詞1、搜索引擎關(guān)鍵詞定義2、如何識別關(guān)鍵詞3、關(guān)鍵詞很多人都說(shuō)關(guān)鍵詞,但它們是什么?它是一個(gè)我們發(fā)現很少人理解的關(guān)鍵字,所以我們提出了搜索引擎關(guān)鍵字的概念來(lái)區分頁(yè)面關(guān)鍵字TAG,1、搜索引擎關(guān)鍵字定義: 搜索引擎關(guān)鍵字:搜索者習慣與被使用密不可分搜索引擎識別的漢字組合。
  不同于傳統口語(yǔ)的關(guān)鍵字。它必須在標題中,同時(shí)是頁(yè)面的標題,以及整個(gè)頁(yè)面的主要內容??梢蕴崛?lái)自搜索引擎的相關(guān)搜索。注意第三段必須在標題中,即頁(yè)面的標題,也是整個(gè)頁(yè)面的主要內容。 2、如何識別關(guān)鍵詞:為搜索引擎優(yōu)化識別關(guān)鍵詞的第一步需要一定的語(yǔ)言組織能力和對搜索引擎的理解。確認關(guān)鍵詞的三個(gè)原則:準確性、相關(guān)性和搜索習慣。關(guān)鍵字分詞符號的區別:空格:模糊查詢(xún)“-”、“-”:模糊查詢(xún)分詞和解釋“|”:獨立查詢(xún)絕對分詞“_”:獨立查詢(xún)絕對分詞關(guān)鍵字1關(guān)鍵字2關(guān)鍵字3關(guān)鍵字字1_關(guān)鍵字2_關(guān)鍵詞3,其中下劃線(xiàn)和下劃線(xiàn)也不同,_例如:以陳冠希的消息為例,陳冠希計劃8月回港支持農夫公司,將陳煥仁踢走_港臺明星新聞_娛樂(lè )_騰訊網(wǎng),這是騰訊網(wǎng)的新聞??梢钥吹匠诵侣勵^條之外,網(wǎng)站 列都在 _ 之后。騰訊的目的是對關(guān)鍵詞進(jìn)行細分,突出頭條。關(guān)鍵詞劃分的時(shí)候,要么搜索計劃8月回港支持農民公司踢陳煥仁的陳冠希,要么搜索騰訊。如果我們用空格分隔,陳冠希和Gillian GIGI喜歡在香港拍照,那么我們搜索“陳冠希的GIGI照片”也會(huì )搜索到這個(gè)標題。這就是模糊搜索和拆分關(guān)鍵詞搜索的區別。體現在搜索結果上,大家可以試試,很多上網(wǎng)很久的網(wǎng)友都知道,百度不僅可以搜索吃等詞,還可以搜索川菜,中間加空格的原理兩個(gè)關(guān)鍵字是一樣的,這個(gè)是關(guān)于關(guān)鍵字的處理,基本上keyword->title->h1->頁(yè)面內容基本上就是一個(gè)頁(yè)??面,最好只設計一個(gè)H1,H1是一個(gè)key的一個(gè)頁(yè)面。如果百度的蜘蛛爬過(guò)來(lái),會(huì )先爬標題,然后再往下爬到H1H2H3H4。如果爬到多個(gè)H1,爬蟲(chóng)就傻了,因為它不知道哪個(gè)H1更重要。最好的做法是文章 的標題用 H1 括起來(lái),與標題相同。關(guān)鍵字相關(guān)性低的頁(yè)面鏈接,只能增加鏈接的廣度。
  
  不知道大家是怎么理解它的意思的。如果你想做外部鏈接!那么外鏈的目的地就是中間的關(guān)鍵詞,所以你做的外鏈必須和目標頁(yè)面中的關(guān)鍵詞相同或相似。如果相關(guān)性不高,只能增加鏈接的廣度,不會(huì )增加網(wǎng)站的權重那么網(wǎng)站的權重是多少呢?一般來(lái)說(shuō),搜索引擎都會(huì )給出一個(gè)網(wǎng)站的評價(jià),比如gg的PR值。當然,百度也有明確表示是對網(wǎng)站的評價(jià)。當然,評價(jià)越高,你的網(wǎng)站就越好。如果你的網(wǎng)站@網(wǎng)站高權重蜘蛛比較勤奮。不僅他們一個(gè)人來(lái),還帶了一家老少皆宜1、域名優(yōu)化百度喜歡拼音GOOGLE喜歡英文是一個(gè)網(wǎng)站首先好域名現在看來(lái)百度喜歡.com勝過(guò).cn,所以如果你想做一個(gè)網(wǎng)站,試著(zhù)注冊.com。拼音,因為大部分的自然流量來(lái)自百度,如果一個(gè)域名是拼音,它可能或多或少的流量沒(méi)有內容。 2、URL的優(yōu)化目錄在建站過(guò)程中不超過(guò)三級靜態(tài)內容有關(guān)鍵字存儲目錄不超過(guò)三層,百度可以抓取最深的目錄,GG更適合,但加深收錄 的over層中的一級目錄會(huì )降低權限,或者根本就沒(méi)有 收錄 ,另外,直接在根目錄下創(chuàng )建一個(gè)列目錄確實(shí)有很多好處。例如,該組中的許多人都使用審查程序。我們在最短的時(shí)間內將其更改為偽靜態(tài)結果。在沒(méi)有內容的情況下,我們上傳了3天,收到了。 500多頁(yè)采集了500多頁(yè),太靜態(tài)了!淺目錄!好域名!必不可少! 3、4、優(yōu)化圖片優(yōu)化我已經(jīng)講過(guò)alt的優(yōu)化了。使用模糊或分割取決于您。對于圖片優(yōu)化,很多人在做網(wǎng)站的時(shí)候都會(huì )使用大圖,放在網(wǎng)站最顯眼的位置,但是很多人并沒(méi)有加圖片的ALT屬性,想象一下爬蟲(chóng)搜索引擎來(lái)到你的頁(yè)面,到處都是img,蜘蛛可能是個(gè)書(shū)呆子,他最想看到的是大奶,但是到處都是img,沒(méi)有名字,他看不到,他們是所有的代碼,所以他會(huì )一一過(guò)一遍。不幸的是,他永遠不會(huì )知道圖片中的內容,然后他會(huì )感到無(wú)聊并且不會(huì )再爬行。那么在電商圈,我們用alt給每張圖片改個(gè)名字,例如:
  ,有誰(shuí)知道這是什么圖片??jì)蓚€(gè)都不知道!只知道是圖片,如果我們添加alt呢?
  
  哦哦哦哦~~原來(lái)是木托蘭,蜘蛛看著(zhù)我!蘭蘭!直接上去,然后仔細采集,然后就會(huì )出現在百度的圖片搜索中,這點(diǎn)很重要!記得給你的網(wǎng)站圖片加alt,5、表格優(yōu)化,現在比較流行div+cssth盡量不要嵌套多層,盡量用吧
<p>+css 不過(guò)我還是想說(shuō)說(shuō)表格。建站時(shí)建議不要嵌套太多表。一般不應超過(guò)4層表。要求是三層。最好使用DIV,可能是DVI+CSS。費時(shí)費力,但好處是無(wú)法言喻的,所以有人說(shuō)代碼不簡(jiǎn)潔,CSS很復雜,CSS確實(shí)很復雜,但是蜘蛛不會(huì )看CSS,只會(huì )看在你的內容!對 js 的 css 外部調用也是如此。相對來(lái)說(shuō),DIV+CSS確實(shí)比TABLE好很多。當然,這是在 SEO 方面。 Flash 優(yōu)化搜索引擎無(wú)法抓取嵌入的 html。最好提供 html 版本的幫助。不是為了提高頁(yè)面的美化效果。不要選擇使用FLASH。很多人喜歡在 網(wǎng)站 的主頁(yè)上使用 FLASH 幻燈片。我不知道。你發(fā)現如果列表中的FLASH沒(méi)有消息,那么你的消息可能不是收錄,那么你的消息可能不是收錄,他是看不懂的,就像看圖片沒(méi)有ALT,他是瞎子!原因很簡(jiǎn)單,蜘蛛看不懂!不要使用 js 進(jìn)行導航。導航調用JS很方便,所以不用重建整個(gè)站點(diǎn)就可以改變導航,可惜蜘蛛又傻又幼稚,看不懂,8、代碼優(yōu)化簡(jiǎn)潔和高效。 div + css盡量不要用JS調用8、代碼優(yōu)化,簡(jiǎn)潔高效規范優(yōu)化部分也講完了。先說(shuō)一下百度和GOOGLE的區別。百度就像一個(gè)愛(ài)新厭舊頁(yè)面的年輕人。 GOOGLE 就像一個(gè)古老的古董。他喜歡舊的和被廣泛認可的有價(jià)值的頁(yè)面。 N個(gè)外部鏈接,但是你的關(guān)鍵字搜索結果排名一段時(shí)間后慢慢下降的主要原因,SEO有效,如果你把一個(gè)頁(yè)面作為一個(gè)整體,你會(huì )做百度如果你放一個(gè) 查看全部

  優(yōu)化的解決方案:高效PHP開(kāi)發(fā)人員的十大PHP開(kāi)發(fā)工具
  Caption: 如何選擇最好的 PHP 開(kāi)發(fā)工具
  PHP 是用于構建 網(wǎng)站 和 Web 應用程序的最快和最廣泛使用的服務(wù)器端腳本語(yǔ)言。
  開(kāi)發(fā)人員更喜歡 PHP 或其他一些腳本語(yǔ)言(例如 Python 和 Ruby)有幾個(gè)很好的理由。PHP 有非常詳細的文檔、許多現成的腳本、龐大的社區和得到良好支持的框架。為了讓PHP開(kāi)發(fā)更容易一些,一些專(zhuān)家開(kāi)發(fā)了很多PHP開(kāi)發(fā)工具,可以提高編程效率。PHP 工具旨在提供完美的 IDE(集成開(kāi)發(fā)環(huán)境),PHP 開(kāi)發(fā)人員可以利用它高效地構建引人入勝、創(chuàng )新且功能豐富的 PHP 項目。
  當今市場(chǎng)充斥著(zhù)如此多的 PHP 開(kāi)發(fā)工具,因此選擇最好的工具可能成為一項具有挑戰性的任務(wù)。以下是我們挑選的在 Web 開(kāi)發(fā)社區中最受關(guān)注的 10 大 PHP 開(kāi)發(fā)工具。
  1. PHPStorm
  PHPStorm 輕量、快速、流暢,是 PHPer 選擇開(kāi)發(fā)工具的標準。此 PHP IDE 可與 Zend Framework、Symfony、Yii、Laravel 和 CakePHP 等絕大多數 PHP 框架以及 Drupal、Magento 和 WordPress 等流行的內容管理系統 (cms) 配合使用。
  除了代碼重構、單元測試和調試之外,IDE 還為 CSS、HTML5 和 JavaScript 等主流前端技術(shù)提供實(shí)時(shí)編輯支持。它還使開(kāi)發(fā)人員能夠與數據庫、版本控制系統、遠程部署、編寫(xiě)器、命令行工具和 REST 客戶(hù)端緊密集成。
  PHPStorm 的特點(diǎn):
  PHPStorm 的特點(diǎn):
  2. Zend Studio
  大多數 Web 開(kāi)發(fā)人員會(huì )選擇 Zend Studio 以獲得最快的速度。在 Zend Studio 中編寫(xiě)和調試代碼不需要程序員額外的工作和時(shí)間。在支持 PHP 7 的同時(shí),它通過(guò)集成 Xdebug 和 Zend Debugger 等來(lái)調試 PHP 腳本。這個(gè)功能齊全的 PHP IDE 具有一組令人興奮的功能,可以在包括云服務(wù)器在內的各種服務(wù)器上部署應用程序。Zend Studio 也可以通過(guò) Eclipse 插件進(jìn)行擴展。
  Zend Studio 特點(diǎn):
  Zend Studio 特色:
  3. NuSphere PhpED
  PhpED 是 NuSphere 提供的 PHP 專(zhuān)有集成開(kāi)發(fā)工具。此 PHP IDE 收錄高級 PHP 編輯器、Profiler、PHP 調試工具、數據庫客戶(hù)端和代碼優(yōu)化工具,為開(kāi)發(fā)人員提供了多種工具和優(yōu)化器,讓整個(gè) Web 開(kāi)發(fā)過(guò)程不再繁瑣。PhpEd 使用商用 PHP 加速器 PhpExpress 加速應用程序開(kāi)發(fā)過(guò)程。此 IDE 非常適合開(kāi)發(fā)復雜的 網(wǎng)站 和 Web 應用程序。它支持 JavaScript、HTML 和 CSS3,并廣泛支持 PHP 7.1。它的重構功能使開(kāi)發(fā)人員能夠有效地改進(jìn)代碼。PhpED 可以使用最流行的 PHP 框架,如 Laravel、Zend 和 Yii 等。
  
  PhpED 特點(diǎn):
  PhpED 專(zhuān)長(cháng):
  4. 網(wǎng)豆
  該工具具有支持多種語(yǔ)言的豐富功能。NetBeans 最初是用于 Java 開(kāi)發(fā)的,目前的版本定位是輕量級、速度更快并支持 PHP 開(kāi)發(fā)服務(wù)。它還支持對其他編程語(yǔ)言的擴展,例如 C、C++ 和 HTML5)。它支持開(kāi)發(fā)大型Web應用程序和不同的本地語(yǔ)言,如日語(yǔ)、俄語(yǔ)、英語(yǔ)、巴西葡萄牙語(yǔ)以及簡(jiǎn)體中文。
  這個(gè)開(kāi)源 PHP 開(kāi)發(fā)工具可以與所有流行的 PHP 框架一起使用,包括 Zend、Symfony 2、CakePHP、FuelPHP、Smarty 和 WordPress。
  NetBeans 功能:
  NetBeans 專(zhuān)業(yè)知識:
  5.云9
  Cloud9是AWS提供的一款開(kāi)源云IDE,為數百種編程語(yǔ)言(PHP、C、C++、JavaScript、Python等)提供開(kāi)發(fā)環(huán)境。開(kāi)發(fā)人員可以使用預配置的環(huán)境立即開(kāi)始編碼,構建具有瀏覽器兼容性測試和實(shí)時(shí)預覽等功能的 Web 應用程序,并使用協(xié)作編碼功能與同事無(wú)縫協(xié)作。
  Cloud 9 為創(chuàng )建無(wú)服務(wù)器應用程序提供了完美的體驗,能夠遠程定義資源、執行無(wú)服務(wù)器應用程序并對其進(jìn)行調試。程序員可以與同事共享開(kāi)發(fā)環(huán)境,能夠配對程序并跟蹤實(shí)時(shí)輸入。Cloud 9 確保輕松構建可在瀏覽器中編碼的無(wú)服務(wù)器應用程序。
  Cloud9 特點(diǎn):
  Cloud9 專(zhuān)長(cháng):
  6. Aptana 工作室
  Aptana Studio 是一個(gè)開(kāi)源 PHP 開(kāi)發(fā)工具,用于與各種服務(wù)器端和客戶(hù)端 Web 技術(shù)集成。PHP、Python、CSS3、Ruby on Rails、Ruby 和 HTML5 都是這些堆棧的一部分。它支持調試器和命令行界面,使 PHP 應用程序開(kāi)發(fā)更容易。它允許 PHP 程序員在同一環(huán)境中構建和測試 Web 應用程序。它帶有 SFTP、FTP 和自定義 IDE。這個(gè)強大的 Web 開(kāi)發(fā)引擎利用了 Eclipse 的靈活性,并收錄有關(guān)高級 Web 瀏覽器中每個(gè)元素的支持范圍的詳細信息。Aptana Studio 是一個(gè)高性能 PHP IDE,它收錄一系列強大的功能來(lái)提高程序員的工作效率。
  Aptana Studio 特點(diǎn):
  阿普塔納專(zhuān)長(cháng):
  7. 代碼龍蝦
  
  Codelobster Software 的 CodeLobster IDE 也是社區中最受歡迎的 PHP 開(kāi)發(fā)工具之一。它支持大多數 PHP 框架,如 Symfony、Laravel、CodeIgniter、CakePHP、Magento、Joomla 和 Drupal。CodeLobster IDE 簡(jiǎn)化了這個(gè)過(guò)程。無(wú)需記住參數、函數、屬性和標簽的名稱(chēng)——它已經(jīng)實(shí)現了 HTML、JavaScript、PHP 和 CSS 的自動(dòng)完成功能。使用其內部 PHP 調試器,您可以在本地驗證您的代碼。此外,此 PHP 工具會(huì )自動(dòng)檢測當前服務(wù)器的設置并配置相關(guān)文件以使用免費調試器。它還支持Drupal、WordPress、Magento 和Joomla 等主流cms。
  CodeLobster 特點(diǎn):
  CodeLobster 特色:
  8.崇高文本
  Sublime Text 是 PHP 開(kāi)發(fā)的領(lǐng)先測試編輯器。但它不是 IDE。通過(guò)安裝某些插件和包,您可以使其成為開(kāi)發(fā) PHP 應用程序的合適編輯器。這個(gè)跨平臺的源代碼編輯器原生支持多種編程和標記語(yǔ)言。它可以通過(guò)自定義 UI 工具包進(jìn)行高度定制。
  崇高文本功能:
  崇高文本專(zhuān)業(yè):
  9. PHP 調試欄
  PHPDebugbar 是一個(gè) PHP 調試器,可以與任何項目一起運行并顯示各種 Web 應用程序狀態(tài)的數據。這個(gè) PHP 開(kāi)發(fā)工具由兩部分組成:mainDebugBar 對象、數據采集器和渲染器。StandardDebugBar 收錄一組預配置的內置采集器。
  除了 PHP,還可以捕獲 JavaScript 和 HTML 數據。此外,PHPDebugbar 可以檢測 CSS 元素,監控網(wǎng)絡(luò )。它是 Web 應用程序分析數據的最佳選擇。您可以創(chuàng )建自己的集合以便于集成。
  PHPDebugbar 函數:
  PHPDebugbar 特色:
  10.日食
  當你搜索最好的 PHP 開(kāi)發(fā)工具時(shí),大多數搜索結果都會(huì )在他們的列表中收錄 Eclipse 編輯器,它是一個(gè)完整的開(kāi)發(fā)工具,在頂級 PHP 工具列表中絕對排名靠前。您可以從各種插件中自由選擇,從而更輕松地開(kāi)發(fā)和簡(jiǎn)化您的代碼。還可以幫助定制和擴展IDE以滿(mǎn)足項目的需要。這個(gè) PHP IDE 可以支持 GUI 和非 GUI 應用程序。這個(gè)跨平臺的 PHP 編輯器是大型 PHP 項目的理想選擇。
  日食特點(diǎn):
  日食專(zhuān)長(cháng):
  上面列出的每個(gè)工具都有自己獨特的功能,可以讓開(kāi)發(fā)人員快速輕松地創(chuàng )建 PHP網(wǎng)站 和應用程序,但是這些≈不是市場(chǎng)上唯一的開(kāi)發(fā)工具,您可以找到更多付費或免費的編輯器工具.
  解決方案:SEO(搜索引擎優(yōu)化)重點(diǎn)知識
  電商圈SEO(搜索引擎優(yōu)化)基礎知識基礎課程目錄一、SEO基本概念及模型二、搜索引擎關(guān)鍵詞三、搜索鏈接引擎四、頁(yè)面內部元素優(yōu)化五、關(guān)于百度和GOOGLE一、SEO基本概念和模型1、SEO定義2、搜索引擎(SE)工作model3、搜索引擎優(yōu)化 (SEO) 工作模型1、SEO 定義 SEO=SearchEngineOptimization 搜索引擎優(yōu)化是一種使特定頁(yè)面在搜索結果中獲得有利排名的方法。搜索引擎算法具有高度機密性,任何搜索引擎優(yōu)化都是基于猜測,需要長(cháng)期觀(guān)察、總結、預算和逐步驗證。搜索引擎優(yōu)化必須從查看者的角度考慮,因為搜索引擎算法也是為了滿(mǎn)足搜索者而設計的。 SEO工作模式我解釋??梢钥吹絊EO模型中有網(wǎng)站A和網(wǎng)站B,那么它們是如何輸入我們指定的內容的呢?哦,通過(guò)關(guān)鍵字(我稍后會(huì )談到關(guān)鍵字) 為什么圖像的中心是頁(yè)面而不是 網(wǎng)站?因為給外鏈設置關(guān)鍵詞的目的是讓用戶(hù)進(jìn)入我們希望他進(jìn)入的頁(yè)面,而不是宣傳整個(gè)網(wǎng)站,而外鏈、關(guān)鍵詞和這個(gè)頁(yè)面的內容是相關(guān)的。電子商務(wù)二、搜索引擎關(guān)鍵詞1、搜索引擎關(guān)鍵詞定義2、如何識別關(guān)鍵詞3、關(guān)鍵詞很多人都說(shuō)關(guān)鍵詞,但它們是什么?它是一個(gè)我們發(fā)現很少人理解的關(guān)鍵字,所以我們提出了搜索引擎關(guān)鍵字的概念來(lái)區分頁(yè)面關(guān)鍵字TAG,1、搜索引擎關(guān)鍵字定義: 搜索引擎關(guān)鍵字:搜索者習慣與被使用密不可分搜索引擎識別的漢字組合。
  不同于傳統口語(yǔ)的關(guān)鍵字。它必須在標題中,同時(shí)是頁(yè)面的標題,以及整個(gè)頁(yè)面的主要內容??梢蕴崛?lái)自搜索引擎的相關(guān)搜索。注意第三段必須在標題中,即頁(yè)面的標題,也是整個(gè)頁(yè)面的主要內容。 2、如何識別關(guān)鍵詞:為搜索引擎優(yōu)化識別關(guān)鍵詞的第一步需要一定的語(yǔ)言組織能力和對搜索引擎的理解。確認關(guān)鍵詞的三個(gè)原則:準確性、相關(guān)性和搜索習慣。關(guān)鍵字分詞符號的區別:空格:模糊查詢(xún)“-”、“-”:模糊查詢(xún)分詞和解釋“|”:獨立查詢(xún)絕對分詞“_”:獨立查詢(xún)絕對分詞關(guān)鍵字1關(guān)鍵字2關(guān)鍵字3關(guān)鍵字字1_關(guān)鍵字2_關(guān)鍵詞3,其中下劃線(xiàn)和下劃線(xiàn)也不同,_例如:以陳冠希的消息為例,陳冠希計劃8月回港支持農夫公司,將陳煥仁踢走_港臺明星新聞_娛樂(lè )_騰訊網(wǎng),這是騰訊網(wǎng)的新聞??梢钥吹匠诵侣勵^條之外,網(wǎng)站 列都在 _ 之后。騰訊的目的是對關(guān)鍵詞進(jìn)行細分,突出頭條。關(guān)鍵詞劃分的時(shí)候,要么搜索計劃8月回港支持農民公司踢陳煥仁的陳冠希,要么搜索騰訊。如果我們用空格分隔,陳冠希和Gillian GIGI喜歡在香港拍照,那么我們搜索“陳冠希的GIGI照片”也會(huì )搜索到這個(gè)標題。這就是模糊搜索和拆分關(guān)鍵詞搜索的區別。體現在搜索結果上,大家可以試試,很多上網(wǎng)很久的網(wǎng)友都知道,百度不僅可以搜索吃等詞,還可以搜索川菜,中間加空格的原理兩個(gè)關(guān)鍵字是一樣的,這個(gè)是關(guān)于關(guān)鍵字的處理,基本上keyword->title->h1->頁(yè)面內容基本上就是一個(gè)頁(yè)??面,最好只設計一個(gè)H1,H1是一個(gè)key的一個(gè)頁(yè)面。如果百度的蜘蛛爬過(guò)來(lái),會(huì )先爬標題,然后再往下爬到H1H2H3H4。如果爬到多個(gè)H1,爬蟲(chóng)就傻了,因為它不知道哪個(gè)H1更重要。最好的做法是文章 的標題用 H1 括起來(lái),與標題相同。關(guān)鍵字相關(guān)性低的頁(yè)面鏈接,只能增加鏈接的廣度。
  
  不知道大家是怎么理解它的意思的。如果你想做外部鏈接!那么外鏈的目的地就是中間的關(guān)鍵詞,所以你做的外鏈必須和目標頁(yè)面中的關(guān)鍵詞相同或相似。如果相關(guān)性不高,只能增加鏈接的廣度,不會(huì )增加網(wǎng)站的權重那么網(wǎng)站的權重是多少呢?一般來(lái)說(shuō),搜索引擎都會(huì )給出一個(gè)網(wǎng)站的評價(jià),比如gg的PR值。當然,百度也有明確表示是對網(wǎng)站的評價(jià)。當然,評價(jià)越高,你的網(wǎng)站就越好。如果你的網(wǎng)站@網(wǎng)站高權重蜘蛛比較勤奮。不僅他們一個(gè)人來(lái),還帶了一家老少皆宜1、域名優(yōu)化百度喜歡拼音GOOGLE喜歡英文是一個(gè)網(wǎng)站首先好域名現在看來(lái)百度喜歡.com勝過(guò).cn,所以如果你想做一個(gè)網(wǎng)站,試著(zhù)注冊.com。拼音,因為大部分的自然流量來(lái)自百度,如果一個(gè)域名是拼音,它可能或多或少的流量沒(méi)有內容。 2、URL的優(yōu)化目錄在建站過(guò)程中不超過(guò)三級靜態(tài)內容有關(guān)鍵字存儲目錄不超過(guò)三層,百度可以抓取最深的目錄,GG更適合,但加深收錄 的over層中的一級目錄會(huì )降低權限,或者根本就沒(méi)有 收錄 ,另外,直接在根目錄下創(chuàng )建一個(gè)列目錄確實(shí)有很多好處。例如,該組中的許多人都使用審查程序。我們在最短的時(shí)間內將其更改為偽靜態(tài)結果。在沒(méi)有內容的情況下,我們上傳了3天,收到了。 500多頁(yè)采集了500多頁(yè),太靜態(tài)了!淺目錄!好域名!必不可少! 3、4、優(yōu)化圖片優(yōu)化我已經(jīng)講過(guò)alt的優(yōu)化了。使用模糊或分割取決于您。對于圖片優(yōu)化,很多人在做網(wǎng)站的時(shí)候都會(huì )使用大圖,放在網(wǎng)站最顯眼的位置,但是很多人并沒(méi)有加圖片的ALT屬性,想象一下爬蟲(chóng)搜索引擎來(lái)到你的頁(yè)面,到處都是img,蜘蛛可能是個(gè)書(shū)呆子,他最想看到的是大奶,但是到處都是img,沒(méi)有名字,他看不到,他們是所有的代碼,所以他會(huì )一一過(guò)一遍。不幸的是,他永遠不會(huì )知道圖片中的內容,然后他會(huì )感到無(wú)聊并且不會(huì )再爬行。那么在電商圈,我們用alt給每張圖片改個(gè)名字,例如:
  ,有誰(shuí)知道這是什么圖片??jì)蓚€(gè)都不知道!只知道是圖片,如果我們添加alt呢?
  
  哦哦哦哦~~原來(lái)是木托蘭,蜘蛛看著(zhù)我!蘭蘭!直接上去,然后仔細采集,然后就會(huì )出現在百度的圖片搜索中,這點(diǎn)很重要!記得給你的網(wǎng)站圖片加alt,5、表格優(yōu)化,現在比較流行div+cssth盡量不要嵌套多層,盡量用吧
<p>+css 不過(guò)我還是想說(shuō)說(shuō)表格。建站時(shí)建議不要嵌套太多表。一般不應超過(guò)4層表。要求是三層。最好使用DIV,可能是DVI+CSS。費時(shí)費力,但好處是無(wú)法言喻的,所以有人說(shuō)代碼不簡(jiǎn)潔,CSS很復雜,CSS確實(shí)很復雜,但是蜘蛛不會(huì )看CSS,只會(huì )看在你的內容!對 js 的 css 外部調用也是如此。相對來(lái)說(shuō),DIV+CSS確實(shí)比TABLE好很多。當然,這是在 SEO 方面。 Flash 優(yōu)化搜索引擎無(wú)法抓取嵌入的 html。最好提供 html 版本的幫助。不是為了提高頁(yè)面的美化效果。不要選擇使用FLASH。很多人喜歡在 網(wǎng)站 的主頁(yè)上使用 FLASH 幻燈片。我不知道。你發(fā)現如果列表中的FLASH沒(méi)有消息,那么你的消息可能不是收錄,那么你的消息可能不是收錄,他是看不懂的,就像看圖片沒(méi)有ALT,他是瞎子!原因很簡(jiǎn)單,蜘蛛看不懂!不要使用 js 進(jìn)行導航。導航調用JS很方便,所以不用重建整個(gè)站點(diǎn)就可以改變導航,可惜蜘蛛又傻又幼稚,看不懂,8、代碼優(yōu)化簡(jiǎn)潔和高效。 div + css盡量不要用JS調用8、代碼優(yōu)化,簡(jiǎn)潔高效規范優(yōu)化部分也講完了。先說(shuō)一下百度和GOOGLE的區別。百度就像一個(gè)愛(ài)新厭舊頁(yè)面的年輕人。 GOOGLE 就像一個(gè)古老的古董。他喜歡舊的和被廣泛認可的有價(jià)值的頁(yè)面。 N個(gè)外部鏈接,但是你的關(guān)鍵字搜索結果排名一段時(shí)間后慢慢下降的主要原因,SEO有效,如果你把一個(gè)頁(yè)面作為一個(gè)整體,你會(huì )做百度如果你放一個(gè)

10個(gè)基于java的cms網(wǎng)站內容管理系統實(shí)戰(圖)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 127 次瀏覽 ? 2022-09-19 19:00 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統實(shí)戰(圖)
  10個(gè)基于java的cms網(wǎng)站內容管理系統實(shí)戰---beanlistener-網(wǎng)站的內容管理系統,其中包括外部系統與資源管理系統之間的管理權限劃分;看看這個(gè)網(wǎng)站,里面的問(wèn)題比較詳細,
  那我推薦我們后臺開(kāi)發(fā)用到的技術(shù):
  
  1、git&svn在源代碼管理方面的用到的主要是:git介紹與使用git代碼倉庫:倉庫:一個(gè)倉庫是一種介于已備份和未備份代碼之間的文件組織方式,它的文件組織方式和傳統的文件夾不同,它依賴(lài)于版本管理系統(比如svn).只有在代碼有更改時(shí)才會(huì )把改動(dòng)提交到倉庫中,提交到倉庫的速度會(huì )比本地更快。git將處理提交到倉庫的事件,保證文件的正確性,以確保代碼的有效性。
  與日志一樣,任何不再修改的文件都會(huì )被git刪除。在git中,任何作者(github)上傳的文件都會(huì )成為永久性存儲在倉庫里,否則會(huì )由于內容的增刪而被刪除。在本地和分支同步時(shí)會(huì )用到到git的分支處理方式。
  2、mysql現在互聯(lián)網(wǎng)的發(fā)展,流量的大小決定著(zhù)用戶(hù)的數量和質(zhì)量,那么怎么能達到更好的推廣和更好的去獲取用戶(hù)就是我們需要考慮的問(wèn)題。那么mysql數據庫,php應用框架等mysql優(yōu)化方案是我們去選擇的。建議如果是開(kāi)發(fā)互聯(lián)網(wǎng),需要用到mysql或者其他sql數據庫,在提速方面是推薦使用mysql的,所以要配置一個(gè)mysql客戶(hù)端也可以。例如可以使用我們提供的工具使用阿里云的mysql數據庫,提供在線(xiàn)的管理。
  
  3、ajax模式一種基于web技術(shù)的一種前端技術(shù)。因為我們的網(wǎng)站要去推廣的時(shí)候,不僅僅是去做一些數據的處理了,比如需要去進(jìn)行一些簡(jiǎn)單的一些圖片處理和文本的處理,圖片處理就像excel圖表模板一樣,不同的是只需要發(fā)送和接收給http庫,而簡(jiǎn)單的文本處理,就像excel中的數據統計一樣,只需要發(fā)送給query語(yǔ)句,而已。
  這個(gè)需要小心去搭建一個(gè)自己的ajax的模板。因為ajax的模板編寫(xiě)的話(huà)要注意多個(gè)頁(yè)面的跳轉,多個(gè)頁(yè)面的傳值,甚至要去實(shí)現相同頁(yè)面的圖片上傳等。只要這一點(diǎn)出現問(wèn)題,你網(wǎng)站的推廣就會(huì )成問(wèn)題。
  4、前端js與css引擎做前端的時(shí)候,是要學(xué)習后端的js技術(shù)的,它做這些我們需要知道前端的js語(yǔ)言是如何實(shí)現的,由于前端架構對js的限制,那么前端又是如何實(shí)現這些東西的呢?我們稱(chēng)之為前端js引擎,他是需要靠后端去實(shí)現前端頁(yè)面與服務(wù)器端的交互的,其實(shí)js的代碼是我們中間交互的一個(gè)橋梁,其實(shí)無(wú)非就是那幾行代碼,這些代碼的處理都是需要通過(guò)requirejs處理,在進(jìn)行fetch的處理,相信大家想想就知道怎么回事了。這些也是需要去研究jquery的源碼的。其他。 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統實(shí)戰(圖)
  10個(gè)基于java的cms網(wǎng)站內容管理系統實(shí)戰---beanlistener-網(wǎng)站的內容管理系統,其中包括外部系統與資源管理系統之間的管理權限劃分;看看這個(gè)網(wǎng)站,里面的問(wèn)題比較詳細,
  那我推薦我們后臺開(kāi)發(fā)用到的技術(shù):
  
  1、git&svn在源代碼管理方面的用到的主要是:git介紹與使用git代碼倉庫:倉庫:一個(gè)倉庫是一種介于已備份和未備份代碼之間的文件組織方式,它的文件組織方式和傳統的文件夾不同,它依賴(lài)于版本管理系統(比如svn).只有在代碼有更改時(shí)才會(huì )把改動(dòng)提交到倉庫中,提交到倉庫的速度會(huì )比本地更快。git將處理提交到倉庫的事件,保證文件的正確性,以確保代碼的有效性。
  與日志一樣,任何不再修改的文件都會(huì )被git刪除。在git中,任何作者(github)上傳的文件都會(huì )成為永久性存儲在倉庫里,否則會(huì )由于內容的增刪而被刪除。在本地和分支同步時(shí)會(huì )用到到git的分支處理方式。
  2、mysql現在互聯(lián)網(wǎng)的發(fā)展,流量的大小決定著(zhù)用戶(hù)的數量和質(zhì)量,那么怎么能達到更好的推廣和更好的去獲取用戶(hù)就是我們需要考慮的問(wèn)題。那么mysql數據庫,php應用框架等mysql優(yōu)化方案是我們去選擇的。建議如果是開(kāi)發(fā)互聯(lián)網(wǎng),需要用到mysql或者其他sql數據庫,在提速方面是推薦使用mysql的,所以要配置一個(gè)mysql客戶(hù)端也可以。例如可以使用我們提供的工具使用阿里云的mysql數據庫,提供在線(xiàn)的管理。
  
  3、ajax模式一種基于web技術(shù)的一種前端技術(shù)。因為我們的網(wǎng)站要去推廣的時(shí)候,不僅僅是去做一些數據的處理了,比如需要去進(jìn)行一些簡(jiǎn)單的一些圖片處理和文本的處理,圖片處理就像excel圖表模板一樣,不同的是只需要發(fā)送和接收給http庫,而簡(jiǎn)單的文本處理,就像excel中的數據統計一樣,只需要發(fā)送給query語(yǔ)句,而已。
  這個(gè)需要小心去搭建一個(gè)自己的ajax的模板。因為ajax的模板編寫(xiě)的話(huà)要注意多個(gè)頁(yè)面的跳轉,多個(gè)頁(yè)面的傳值,甚至要去實(shí)現相同頁(yè)面的圖片上傳等。只要這一點(diǎn)出現問(wèn)題,你網(wǎng)站的推廣就會(huì )成問(wèn)題。
  4、前端js與css引擎做前端的時(shí)候,是要學(xué)習后端的js技術(shù)的,它做這些我們需要知道前端的js語(yǔ)言是如何實(shí)現的,由于前端架構對js的限制,那么前端又是如何實(shí)現這些東西的呢?我們稱(chēng)之為前端js引擎,他是需要靠后端去實(shí)現前端頁(yè)面與服務(wù)器端的交互的,其實(shí)js的代碼是我們中間交互的一個(gè)橋梁,其實(shí)無(wú)非就是那幾行代碼,這些代碼的處理都是需要通過(guò)requirejs處理,在進(jìn)行fetch的處理,相信大家想想就知道怎么回事了。這些也是需要去研究jquery的源碼的。其他。

10個(gè)基于java的cms網(wǎng)站內容管理系統,請找出你的答案?

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 83 次瀏覽 ? 2022-09-07 14:02 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統,請找出你的答案?
  10個(gè)基于java的cms網(wǎng)站內容管理系統,請找出你的答案?-架構和組件。感覺(jué)基于weblogic、freedocs的cms網(wǎng)站內容管理系統比較成熟,對產(chǎn)品支持完善。
  
  新生系統做的小一點(diǎn)的沒(méi)什么問(wèn)題,以前我們做的項目的都是簡(jiǎn)單的會(huì )話(huà),視頻播放都要收費的,得幾千塊錢(qián)才能算完成。后續的升級維護什么的就非常困難了?;ヂ?lián)網(wǎng)時(shí)代,不為人服務(wù)就被淘汰,別聽(tīng)人忽悠著(zhù)去做應用軟件,太費錢(qián)了。
  從技術(shù)上來(lái)講現在的智能管理平臺非常成熟了,都是處于廣泛應用過(guò)程中,javaweb開(kāi)發(fā)語(yǔ)言應用在網(wǎng)站上有非常強大的優(yōu)勢,如果開(kāi)發(fā)出一個(gè)saas全套管理系統的話(huà),做出來(lái)的系統,至少能保證上線(xiàn)后是順利的?,F在很多的app公司選擇使用javaweb開(kāi)發(fā)來(lái)支持app.現在javaweb處于比較成熟的階段,現在javaweb開(kāi)發(fā)語(yǔ)言有非常多,選擇一個(gè)好的javaweb開(kāi)發(fā)語(yǔ)言是對于系統質(zhì)量非常重要的,比如對于開(kāi)發(fā)人員來(lái)說(shuō),好的語(yǔ)言需要能夠支持無(wú)縫對接業(yè)務(wù)需求以及一些基礎性業(yè)務(wù)功能,還有的就是簡(jiǎn)單易用、功能豐富等,都是每個(gè)創(chuàng )業(yè)者在選擇的時(shí)候需要考慮的一些因素。
  
  從管理人員角度來(lái)說(shuō),有一些公司做網(wǎng)站,不僅僅只是開(kāi)發(fā)出一個(gè)網(wǎng)站,能在網(wǎng)站上進(jìn)行編輯、登錄、注冊、查詢(xún)、群發(fā)信息等,這些也是作為一個(gè)管理人員需要考慮的問(wèn)題。像一些大公司的一些核心信息,在網(wǎng)站上做不了就直接在移動(dòng)端進(jìn)行登錄吧,這樣也不耽誤管理員工作,而對于個(gè)人網(wǎng)站來(lái)說(shuō),同樣使用javaweb開(kāi)發(fā)的話(huà),就能更輕松的進(jìn)行建站,不再需要過(guò)多的編程,即使沒(méi)有java基礎也沒(méi)有任何關(guān)系,有一些功能就是通過(guò)html編程語(yǔ)言實(shí)現的,這樣建設出來(lái)的網(wǎng)站也基本可以滿(mǎn)足的要求。
  在大量it設備日益發(fā)達的今天,未來(lái)javaweb開(kāi)發(fā)師將會(huì )是越來(lái)越多的程序員和企業(yè)端的開(kāi)發(fā)者希望的,如果喜歡就大膽發(fā)揮你的想象力吧!如果喜歡的話(huà)可以加我微信:,微信公眾號:pal。 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統,請找出你的答案?
  10個(gè)基于java的cms網(wǎng)站內容管理系統,請找出你的答案?-架構和組件。感覺(jué)基于weblogic、freedocs的cms網(wǎng)站內容管理系統比較成熟,對產(chǎn)品支持完善。
  
  新生系統做的小一點(diǎn)的沒(méi)什么問(wèn)題,以前我們做的項目的都是簡(jiǎn)單的會(huì )話(huà),視頻播放都要收費的,得幾千塊錢(qián)才能算完成。后續的升級維護什么的就非常困難了?;ヂ?lián)網(wǎng)時(shí)代,不為人服務(wù)就被淘汰,別聽(tīng)人忽悠著(zhù)去做應用軟件,太費錢(qián)了。
  從技術(shù)上來(lái)講現在的智能管理平臺非常成熟了,都是處于廣泛應用過(guò)程中,javaweb開(kāi)發(fā)語(yǔ)言應用在網(wǎng)站上有非常強大的優(yōu)勢,如果開(kāi)發(fā)出一個(gè)saas全套管理系統的話(huà),做出來(lái)的系統,至少能保證上線(xiàn)后是順利的?,F在很多的app公司選擇使用javaweb開(kāi)發(fā)來(lái)支持app.現在javaweb處于比較成熟的階段,現在javaweb開(kāi)發(fā)語(yǔ)言有非常多,選擇一個(gè)好的javaweb開(kāi)發(fā)語(yǔ)言是對于系統質(zhì)量非常重要的,比如對于開(kāi)發(fā)人員來(lái)說(shuō),好的語(yǔ)言需要能夠支持無(wú)縫對接業(yè)務(wù)需求以及一些基礎性業(yè)務(wù)功能,還有的就是簡(jiǎn)單易用、功能豐富等,都是每個(gè)創(chuàng )業(yè)者在選擇的時(shí)候需要考慮的一些因素。
  
  從管理人員角度來(lái)說(shuō),有一些公司做網(wǎng)站,不僅僅只是開(kāi)發(fā)出一個(gè)網(wǎng)站,能在網(wǎng)站上進(jìn)行編輯、登錄、注冊、查詢(xún)、群發(fā)信息等,這些也是作為一個(gè)管理人員需要考慮的問(wèn)題。像一些大公司的一些核心信息,在網(wǎng)站上做不了就直接在移動(dòng)端進(jìn)行登錄吧,這樣也不耽誤管理員工作,而對于個(gè)人網(wǎng)站來(lái)說(shuō),同樣使用javaweb開(kāi)發(fā)的話(huà),就能更輕松的進(jìn)行建站,不再需要過(guò)多的編程,即使沒(méi)有java基礎也沒(méi)有任何關(guān)系,有一些功能就是通過(guò)html編程語(yǔ)言實(shí)現的,這樣建設出來(lái)的網(wǎng)站也基本可以滿(mǎn)足的要求。
  在大量it設備日益發(fā)達的今天,未來(lái)javaweb開(kāi)發(fā)師將會(huì )是越來(lái)越多的程序員和企業(yè)端的開(kāi)發(fā)者希望的,如果喜歡就大膽發(fā)揮你的想象力吧!如果喜歡的話(huà)可以加我微信:,微信公眾號:pal。

手工檢測Web應用指紋的一些技巧

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 144 次瀏覽 ? 2022-09-05 10:10 ? 來(lái)自相關(guān)話(huà)題

  手工檢測Web應用指紋的一些技巧
  * 本文作者:m00n1ight,本文屬FreeBuf原創(chuàng )獎勵計劃,未經(jīng)許可禁止轉載
  0x01 Web 應用技術(shù)概覽1.1 架構
  大多數 web 應用可以粗略劃分為三個(gè)組件(component)。
  1、客戶(hù)端, 大多數情況下是瀏覽器。
  2、服務(wù)端, Web 服務(wù)器接收客戶(hù)端的HTTP請求并進(jìn)行響應。另外,有時(shí)候 Web服務(wù)器只轉發(fā)請求到應用服務(wù)器(Application Server),由應用服務(wù)器來(lái)處理請求。
  3、后端存儲, 后端存儲一般是DBMS,用于查詢(xún)和存儲數據。
  所有組件都有不同行為,這些不同行為將影響漏洞的存在性和可利用性。所有組件(無(wú)論是客戶(hù)端還是服務(wù)端)都有可能產(chǎn)生漏洞或者其他安全問(wèn)題。
  1.2 客戶(hù)端技術(shù)
  主流的客戶(hù)端技術(shù)每天都在被大量互聯(lián)網(wǎng)用戶(hù)使用,包括 HTML, JavaScript, Flash … 他們常用的瀏覽器則是 Chrome, Firefox, Opera, IE/Edge, Safari 等。另外,包括Android應用的 webview 以及部分PC客戶(hù)端應用(比如QQ或者某些游戲登陸器),也會(huì )引入一部分 web 客戶(hù)端技術(shù)。
  1.3 服務(wù)端技術(shù)
  在服務(wù)端,盡管使用任何技術(shù)的任何Web應用都有或多或少的潛在漏洞,但對于某些特定技術(shù)(如PHP, Struts2等)的網(wǎng)站,則相對更容易產(chǎn)生漏洞。簡(jiǎn)單劃分的話(huà)服務(wù)端技術(shù)大概有以下幾類(lèi)。
  1、Web服務(wù)器(Web Server), 包括 Apache, lighttpd, Nginx, IIS.
  2、應用服務(wù)器(Application Server), 包括 Tomcat, Jboss, Oracle Application server .
  3、編程語(yǔ)言, 包括 PHP, Java, Ruby, Python, C#. 對于后三種語(yǔ)言,一些常見(jiàn)的框架包括 Ruby-on-Rails, .Net MVC, Django 等。
  1.4 后端存儲技術(shù)
  對于大多數中小型網(wǎng)站,數據庫和Web服務(wù)器是在同一臺主機的。常見(jiàn)的后端存儲技術(shù)包括:
  1、關(guān)系型數據庫, 包括 MySQL, Oracle, DB2, SQL Server, PostgreSQL, SQLite 等。
  2、NoSQL, 包括 MongoDB, CouchDB, Redis 等。
  3、目錄訪(fǎng)問(wèn), 包括 openLDAP, Active Directory。
  0x02 Web 服務(wù)器指紋分析2.1 Web 服務(wù)器指紋內容
  我們想要尋找哪些信息。
  1、Web服務(wù)器名稱(chēng),版本
  2、Web服務(wù)器后端是否有應用服務(wù)器
  3、數據庫(DBMS)是否部署在同一主機(host),數據庫類(lèi)型
  4、是否使用反向代理(reverse proxy)
  5、是否使用負載均衡(load balancing)
  6、Web應用使用的編程語(yǔ)言
  2.2 手工檢測技巧2.2.1 HTTP分析
  使用chrome開(kāi)發(fā)者工具或者burpsuite交互式抓包分析HTTP數據。
  1、重點(diǎn)觀(guān)察 響應頭(Response Header)的 Server, X-Powered-By, Set-Cookie 字段。
  2、使用畸形 Host字段的 HTTP請求試探,觀(guān)察響應頭。
  比如 Struts2 的特征之一就是會(huì )設置特殊的JSESSIONID的cookie字段。
  Set-Cookie: JSESSIONID=C09CBBF************7CF6D25D4F0
  又或者以freebuf為例,你可以觀(guān)察到兩個(gè)有趣的字段,Server字段以及WP-Super-Cache。
  Server字段說(shuō)明 freebuf 的服務(wù)器版本是 Apache 2.2.21
  WP-Super-Cache 字段則表明 freebuf 使用名為 WP Super Cache 的 Wordpress 插件。
  2.2.2 瀏覽網(wǎng)站2.2.2.1 關(guān)注HTML源碼
  
  重點(diǎn)關(guān)注以下幾處
  1、上傳與下載功能
  2、認證表單與URL(login,logout, reset password)
  3、后臺管理頁(yè)面(administration section)
  4、數據輸入點(diǎn),例如”留言板,聯(lián)系我們,個(gè)人資料,商品評論,搜索,編輯器”等
  觀(guān)察這些位置的HTML源碼(特殊的class名稱(chēng))及其注釋(comment)部分,可能暴露有價(jià)值信息。
  2.2.2.2 根據網(wǎng)站頁(yè)面后綴判斷
  通常而言
  1、存在.php結尾的文件說(shuō)明該web應用是用PHP寫(xiě)的。
  2、存在.jsp或者.do的文件,說(shuō)明該web應用是由Java寫(xiě)的。
  3、存在.asp或者.aspx結尾的文件,說(shuō)明該web應用可能是由VB或者C#寫(xiě)的。
  需要注意的是(低概率事件),某些腦洞奇特的管理員/開(kāi)發(fā)者/運維可能會(huì )將Java編寫(xiě)的程序用.php的結尾,或者讓某些PHP應用使用.do結尾。
  如果網(wǎng)站路徑存在 RESTful URL 的特征,例如
  /objects/ # will give you a list of all the objects;
/objects/new # will give you the page to create a new object;
/objects/12 # will give you the object with the id 12;
/objects/12/edit # will give you the page to modify the object with the id 12;
  則很有可能是由 Ruby On Rails 或者 Python 開(kāi)發(fā)的。
  2.2.2.3 favicon.ico
  可以通過(guò)默認 favicon.ico 來(lái)判斷CMS,比如 Drupal 的默認icon是一個(gè)水滴狀的物體。在HTML源碼處搜索關(guān)鍵詞icon或者shortcut。
  幾個(gè)例子
  2.2.2.4 robots.txt
  有些cms會(huì )有默認robots.txt,所以我們可以通過(guò)robots.txt來(lái)幫助判斷CMS。下面的是舉了一個(gè)Joomla的robots.txt例子。由于robots.txt只是君子協(xié)議,所以你懂的,在滲透測試時(shí)它完全在說(shuō)明你應該檢查哪些目錄。
  # If the Joomla site is installed within a folder
# eg www.example.com/joomla/ then the robots.txt file
# MUST be moved to the site root
# eg www.example.com/robots.txt
# AND the joomla folder name MUST be prefixed to all of the
# paths.
# eg the Disallow rule for the /administrator/ folder MUST
# be changed to read
# Disallow: /joomla/administrator/
#
# For more information about the robots.txt standard, see:
# http://www.robotstxt.org/orig.html
<p>
#
# For syntax checking, see:
# http://tool.motoricerca.info/robots-checker.phtml
User-agent: *
Disallow: /administrator/
Disallow: /bin/
Disallow: /cache/
Disallow: /cli/
Disallow: /components/
Disallow: /includes/
Disallow: /installation/
Disallow: /language/
Disallow: /layouts/
Disallow: /libraries/
Disallow: /logs/
Disallow: /modules/
Disallow: /plugins/
Disallow: /tmp/</p>
  2.2.2.5 目錄掃描(directory/pages busting)
  可以使用wfuzz進(jìn)行目錄掃描。
  python wfuzz.py -w wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ
  詳細的使用方法請參考
  另外也可以參考 OWASP的目錄掃描工具 OpenDoor,開(kāi)發(fā)比較活躍。
  :///stanislav-web/OpenDoor/wiki
  無(wú)論用什么具體的目錄掃描工具,最終是為了發(fā)現某些404頁(yè)面, SQL錯誤頁(yè)面或者其他異常頁(yè)面,這些頁(yè)面暴露的信息可能可以反映服務(wù)器類(lèi)型與版本。除此以外,對于多數網(wǎng)站的后臺管理頁(yè)面通常都屬于某些常用的路徑(即包含在字典中),因此我們在大多數情況可以通過(guò)目錄掃描來(lái)獲得。如果已知CMS類(lèi)型,可以直接參考文檔來(lái)判斷后臺默認管理頁(yè)面的路徑。
  2.2.2.6 刻意構造錯誤
  錯誤頁(yè)面可以給你提供關(guān)于服務(wù)器的大量信息??梢酝ㄟ^(guò)構造含有隨機字符串的URL,并訪(fǎng)問(wèn)它來(lái)嘗試得到404頁(yè)面。
  Tomcat的默認404頁(yè)面
  Ruby on Rails的默認404頁(yè)面
  還有幾種方法可以構造錯誤。比如在URL中添加特殊字符(NULL),%27(Single Quote),%22(Double Quote)?;蛘咴赨RL中刪除部分參數,刪除部分cookie中的參數(chrome 插件 edit this cookie)。
  不熟練的Django開(kāi)發(fā)者可能會(huì )開(kāi)啟調試模式
  Tomcat 5XX的錯誤時(shí)可能拋出異常會(huì )顯示調用棧
  對于PHP的應用,還有一個(gè)很常用的技巧來(lái)構造錯誤。比如將/index.php?name=hacker替代為/index.php?name[]=hacker。
  關(guān)鍵是要仔細閱讀這些錯誤信息。雖然這聽(tīng)起來(lái)有點(diǎn)蠢,但是你肯定會(huì )驚訝于會(huì )有多少開(kāi)發(fā)者認為兩個(gè)錯誤頁(yè)面是一樣的,即使是錯誤消息的內容完全不同。The evil is in the detail.
  0x03 Web應用指紋特征總結3.1 HTTP響應頭(HTTP response header) 特征 查看全部

  手工檢測Web應用指紋的一些技巧
  * 本文作者:m00n1ight,本文屬FreeBuf原創(chuàng )獎勵計劃,未經(jīng)許可禁止轉載
  0x01 Web 應用技術(shù)概覽1.1 架構
  大多數 web 應用可以粗略劃分為三個(gè)組件(component)。
  1、客戶(hù)端, 大多數情況下是瀏覽器。
  2、服務(wù)端, Web 服務(wù)器接收客戶(hù)端的HTTP請求并進(jìn)行響應。另外,有時(shí)候 Web服務(wù)器只轉發(fā)請求到應用服務(wù)器(Application Server),由應用服務(wù)器來(lái)處理請求。
  3、后端存儲, 后端存儲一般是DBMS,用于查詢(xún)和存儲數據。
  所有組件都有不同行為,這些不同行為將影響漏洞的存在性和可利用性。所有組件(無(wú)論是客戶(hù)端還是服務(wù)端)都有可能產(chǎn)生漏洞或者其他安全問(wèn)題。
  1.2 客戶(hù)端技術(shù)
  主流的客戶(hù)端技術(shù)每天都在被大量互聯(lián)網(wǎng)用戶(hù)使用,包括 HTML, JavaScript, Flash … 他們常用的瀏覽器則是 Chrome, Firefox, Opera, IE/Edge, Safari 等。另外,包括Android應用的 webview 以及部分PC客戶(hù)端應用(比如QQ或者某些游戲登陸器),也會(huì )引入一部分 web 客戶(hù)端技術(shù)。
  1.3 服務(wù)端技術(shù)
  在服務(wù)端,盡管使用任何技術(shù)的任何Web應用都有或多或少的潛在漏洞,但對于某些特定技術(shù)(如PHP, Struts2等)的網(wǎng)站,則相對更容易產(chǎn)生漏洞。簡(jiǎn)單劃分的話(huà)服務(wù)端技術(shù)大概有以下幾類(lèi)。
  1、Web服務(wù)器(Web Server), 包括 Apache, lighttpd, Nginx, IIS.
  2、應用服務(wù)器(Application Server), 包括 Tomcat, Jboss, Oracle Application server .
  3、編程語(yǔ)言, 包括 PHP, Java, Ruby, Python, C#. 對于后三種語(yǔ)言,一些常見(jiàn)的框架包括 Ruby-on-Rails, .Net MVC, Django 等。
  1.4 后端存儲技術(shù)
  對于大多數中小型網(wǎng)站,數據庫和Web服務(wù)器是在同一臺主機的。常見(jiàn)的后端存儲技術(shù)包括:
  1、關(guān)系型數據庫, 包括 MySQL, Oracle, DB2, SQL Server, PostgreSQL, SQLite 等。
  2、NoSQL, 包括 MongoDB, CouchDB, Redis 等。
  3、目錄訪(fǎng)問(wèn), 包括 openLDAP, Active Directory。
  0x02 Web 服務(wù)器指紋分析2.1 Web 服務(wù)器指紋內容
  我們想要尋找哪些信息。
  1、Web服務(wù)器名稱(chēng),版本
  2、Web服務(wù)器后端是否有應用服務(wù)器
  3、數據庫(DBMS)是否部署在同一主機(host),數據庫類(lèi)型
  4、是否使用反向代理(reverse proxy)
  5、是否使用負載均衡(load balancing)
  6、Web應用使用的編程語(yǔ)言
  2.2 手工檢測技巧2.2.1 HTTP分析
  使用chrome開(kāi)發(fā)者工具或者burpsuite交互式抓包分析HTTP數據。
  1、重點(diǎn)觀(guān)察 響應頭(Response Header)的 Server, X-Powered-By, Set-Cookie 字段。
  2、使用畸形 Host字段的 HTTP請求試探,觀(guān)察響應頭。
  比如 Struts2 的特征之一就是會(huì )設置特殊的JSESSIONID的cookie字段。
  Set-Cookie: JSESSIONID=C09CBBF************7CF6D25D4F0
  又或者以freebuf為例,你可以觀(guān)察到兩個(gè)有趣的字段,Server字段以及WP-Super-Cache。
  Server字段說(shuō)明 freebuf 的服務(wù)器版本是 Apache 2.2.21
  WP-Super-Cache 字段則表明 freebuf 使用名為 WP Super Cache 的 Wordpress 插件。
  2.2.2 瀏覽網(wǎng)站2.2.2.1 關(guān)注HTML源碼
  
  重點(diǎn)關(guān)注以下幾處
  1、上傳與下載功能
  2、認證表單與URL(login,logout, reset password)
  3、后臺管理頁(yè)面(administration section)
  4、數據輸入點(diǎn),例如”留言板,聯(lián)系我們,個(gè)人資料,商品評論,搜索,編輯器”等
  觀(guān)察這些位置的HTML源碼(特殊的class名稱(chēng))及其注釋(comment)部分,可能暴露有價(jià)值信息。
  2.2.2.2 根據網(wǎng)站頁(yè)面后綴判斷
  通常而言
  1、存在.php結尾的文件說(shuō)明該web應用是用PHP寫(xiě)的。
  2、存在.jsp或者.do的文件,說(shuō)明該web應用是由Java寫(xiě)的。
  3、存在.asp或者.aspx結尾的文件,說(shuō)明該web應用可能是由VB或者C#寫(xiě)的。
  需要注意的是(低概率事件),某些腦洞奇特的管理員/開(kāi)發(fā)者/運維可能會(huì )將Java編寫(xiě)的程序用.php的結尾,或者讓某些PHP應用使用.do結尾。
  如果網(wǎng)站路徑存在 RESTful URL 的特征,例如
  /objects/ # will give you a list of all the objects;
/objects/new # will give you the page to create a new object;
/objects/12 # will give you the object with the id 12;
/objects/12/edit # will give you the page to modify the object with the id 12;
  則很有可能是由 Ruby On Rails 或者 Python 開(kāi)發(fā)的。
  2.2.2.3 favicon.ico
  可以通過(guò)默認 favicon.ico 來(lái)判斷CMS,比如 Drupal 的默認icon是一個(gè)水滴狀的物體。在HTML源碼處搜索關(guān)鍵詞icon或者shortcut。
  幾個(gè)例子
  2.2.2.4 robots.txt
  有些cms會(huì )有默認robots.txt,所以我們可以通過(guò)robots.txt來(lái)幫助判斷CMS。下面的是舉了一個(gè)Joomla的robots.txt例子。由于robots.txt只是君子協(xié)議,所以你懂的,在滲透測試時(shí)它完全在說(shuō)明你應該檢查哪些目錄。
  # If the Joomla site is installed within a folder
# eg www.example.com/joomla/ then the robots.txt file
# MUST be moved to the site root
# eg www.example.com/robots.txt
# AND the joomla folder name MUST be prefixed to all of the
# paths.
# eg the Disallow rule for the /administrator/ folder MUST
# be changed to read
# Disallow: /joomla/administrator/
#
# For more information about the robots.txt standard, see:
# http://www.robotstxt.org/orig.html
<p>
#
# For syntax checking, see:
# http://tool.motoricerca.info/robots-checker.phtml
User-agent: *
Disallow: /administrator/
Disallow: /bin/
Disallow: /cache/
Disallow: /cli/
Disallow: /components/
Disallow: /includes/
Disallow: /installation/
Disallow: /language/
Disallow: /layouts/
Disallow: /libraries/
Disallow: /logs/
Disallow: /modules/
Disallow: /plugins/
Disallow: /tmp/</p>
  2.2.2.5 目錄掃描(directory/pages busting)
  可以使用wfuzz進(jìn)行目錄掃描。
  python wfuzz.py -w wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ
  詳細的使用方法請參考
  另外也可以參考 OWASP的目錄掃描工具 OpenDoor,開(kāi)發(fā)比較活躍。
  :///stanislav-web/OpenDoor/wiki
  無(wú)論用什么具體的目錄掃描工具,最終是為了發(fā)現某些404頁(yè)面, SQL錯誤頁(yè)面或者其他異常頁(yè)面,這些頁(yè)面暴露的信息可能可以反映服務(wù)器類(lèi)型與版本。除此以外,對于多數網(wǎng)站的后臺管理頁(yè)面通常都屬于某些常用的路徑(即包含在字典中),因此我們在大多數情況可以通過(guò)目錄掃描來(lái)獲得。如果已知CMS類(lèi)型,可以直接參考文檔來(lái)判斷后臺默認管理頁(yè)面的路徑。
  2.2.2.6 刻意構造錯誤
  錯誤頁(yè)面可以給你提供關(guān)于服務(wù)器的大量信息??梢酝ㄟ^(guò)構造含有隨機字符串的URL,并訪(fǎng)問(wèn)它來(lái)嘗試得到404頁(yè)面。
  Tomcat的默認404頁(yè)面
  Ruby on Rails的默認404頁(yè)面
  還有幾種方法可以構造錯誤。比如在URL中添加特殊字符(NULL),%27(Single Quote),%22(Double Quote)?;蛘咴赨RL中刪除部分參數,刪除部分cookie中的參數(chrome 插件 edit this cookie)。
  不熟練的Django開(kāi)發(fā)者可能會(huì )開(kāi)啟調試模式
  Tomcat 5XX的錯誤時(shí)可能拋出異常會(huì )顯示調用棧
  對于PHP的應用,還有一個(gè)很常用的技巧來(lái)構造錯誤。比如將/index.php?name=hacker替代為/index.php?name[]=hacker。
  關(guān)鍵是要仔細閱讀這些錯誤信息。雖然這聽(tīng)起來(lái)有點(diǎn)蠢,但是你肯定會(huì )驚訝于會(huì )有多少開(kāi)發(fā)者認為兩個(gè)錯誤頁(yè)面是一樣的,即使是錯誤消息的內容完全不同。The evil is in the detail.
  0x03 Web應用指紋特征總結3.1 HTTP響應頭(HTTP response header) 特征

10個(gè)基于java的cms網(wǎng)站內容管理系統開(kāi)發(fā)教程分享

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 144 次瀏覽 ? 2022-08-16 06:01 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統開(kāi)發(fā)教程分享
  10個(gè)基于java的cms網(wǎng)站內容管理系統開(kāi)發(fā)教程分享,適合大型cms內容管理系統開(kāi)發(fā),其他cms的開(kāi)發(fā),也可以給大家推薦,謝謝!cms客戶(hù)端軟件開(kāi)發(fā)教程也很多,這里有這個(gè)javacms程序開(kāi)發(fā)教程,是一些國內技術(shù)較好的cms程序員給你們開(kāi)發(fā)的一些系統教程,供大家參考。
  教程你可以看下這個(gè)國內的云掌柜cms博客企業(yè)建站源碼分享系統開(kāi)發(fā)教程我是做cms開(kāi)發(fā)的我這個(gè)教程挺適合你的可以參考下
  
  推薦一個(gè)javacms內容管理系統開(kāi)發(fā)教程,這是有一個(gè)團隊開(kāi)發(fā)的,
  這個(gè)本身是用java編寫(xiě)的,需要java基礎,在校學(xué)生可以考慮,零基礎也是可以學(xué)習的,他們提供java學(xué)習資料,和在線(xiàn)源碼,希望對你有幫助,
  推薦這個(gè)java技術(shù)學(xué)習java企業(yè)內部工具集thejavaquicktutorial
  
  整理了一下,給大家分享一些以java作為前端技術(shù)實(shí)現的cms,感覺(jué)很好用,覺(jué)得有用的可以看看,說(shuō)不定對你有幫助,下面是整理的前端java學(xué)習路線(xiàn),按照這個(gè)學(xué)習就可以了java簡(jiǎn)單快速的開(kāi)發(fā)企業(yè)常用的cms需要了解sql的關(guān)系數據庫一般通用的數據庫,i2c,redis、mysql,一般看apache官方文檔,了解一下mvc整合其他部分學(xué)習其他。
  asp模板之龍船cms
  百格活力
  還有百格活力,里面有整理的一套javacms開(kāi)發(fā)教程。我有這個(gè)javacms開(kāi)發(fā)教程,需要的話(huà)可以留言qaq,需要的話(huà)。 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統開(kāi)發(fā)教程分享
  10個(gè)基于java的cms網(wǎng)站內容管理系統開(kāi)發(fā)教程分享,適合大型cms內容管理系統開(kāi)發(fā),其他cms的開(kāi)發(fā),也可以給大家推薦,謝謝!cms客戶(hù)端軟件開(kāi)發(fā)教程也很多,這里有這個(gè)javacms程序開(kāi)發(fā)教程,是一些國內技術(shù)較好的cms程序員給你們開(kāi)發(fā)的一些系統教程,供大家參考。
  教程你可以看下這個(gè)國內的云掌柜cms博客企業(yè)建站源碼分享系統開(kāi)發(fā)教程我是做cms開(kāi)發(fā)的我這個(gè)教程挺適合你的可以參考下
  
  推薦一個(gè)javacms內容管理系統開(kāi)發(fā)教程,這是有一個(gè)團隊開(kāi)發(fā)的,
  這個(gè)本身是用java編寫(xiě)的,需要java基礎,在校學(xué)生可以考慮,零基礎也是可以學(xué)習的,他們提供java學(xué)習資料,和在線(xiàn)源碼,希望對你有幫助,
  推薦這個(gè)java技術(shù)學(xué)習java企業(yè)內部工具集thejavaquicktutorial
  
  整理了一下,給大家分享一些以java作為前端技術(shù)實(shí)現的cms,感覺(jué)很好用,覺(jué)得有用的可以看看,說(shuō)不定對你有幫助,下面是整理的前端java學(xué)習路線(xiàn),按照這個(gè)學(xué)習就可以了java簡(jiǎn)單快速的開(kāi)發(fā)企業(yè)常用的cms需要了解sql的關(guān)系數據庫一般通用的數據庫,i2c,redis、mysql,一般看apache官方文檔,了解一下mvc整合其他部分學(xué)習其他。
  asp模板之龍船cms
  百格活力
  還有百格活力,里面有整理的一套javacms開(kāi)發(fā)教程。我有這個(gè)javacms開(kāi)發(fā)教程,需要的話(huà)可以留言qaq,需要的話(huà)。

10個(gè)基于java的cms網(wǎng)站內容管理系統十大系統對比

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 128 次瀏覽 ? 2022-07-20 19:05 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統十大系統對比
  10個(gè)基于java的cms網(wǎng)站內容管理系統十大系統對比,你了解多少?獲取免費學(xué)習資料,請移步微信公眾號【大前端小班長(cháng)】,
  
  后臺有web后臺功能的,其實(shí)都需要用java實(shí)現吧。好像是有單獨的php后臺,用java作為主程序設計的。
  java也分很多層級,不同層級用的框架都不一樣。舉例:spring是springboot的一個(gè)框架。spring分前后端,用到的spring框架也不一樣,先說(shuō)spring后端,因為spring后端需要利用到ioc容器。(這個(gè)可以參考犀牛書(shū),寫(xiě)的就比較好)我見(jiàn)過(guò)的php寫(xiě)的后端是這樣的。這是二手貨,二手貨用的是springboot而已。既然選擇了spring,就不要再隨便用java了,其實(shí)spring本身也可以滿(mǎn)足你的需求的。
  
  系統有三個(gè)層級,web,前端,后端,看你需要什么,你可以選擇從web層開(kāi)始學(xué)習,這一塊java我推薦紅寶書(shū),而且至少要看兩遍以上,然后隨著(zhù)你的進(jìn)步,可以根據情況,學(xué)習下后端,熟悉框架是基礎,學(xué)習你不感興趣的,例如mybatis等等,這個(gè)看個(gè)人愛(ài)好,另外不要一上來(lái)就學(xué)大數據云平臺相關(guān)的技術(shù),容易害死你。
  java好啊,有官方文檔, 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統十大系統對比
  10個(gè)基于java的cms網(wǎng)站內容管理系統十大系統對比,你了解多少?獲取免費學(xué)習資料,請移步微信公眾號【大前端小班長(cháng)】,
  
  后臺有web后臺功能的,其實(shí)都需要用java實(shí)現吧。好像是有單獨的php后臺,用java作為主程序設計的。
  java也分很多層級,不同層級用的框架都不一樣。舉例:spring是springboot的一個(gè)框架。spring分前后端,用到的spring框架也不一樣,先說(shuō)spring后端,因為spring后端需要利用到ioc容器。(這個(gè)可以參考犀牛書(shū),寫(xiě)的就比較好)我見(jiàn)過(guò)的php寫(xiě)的后端是這樣的。這是二手貨,二手貨用的是springboot而已。既然選擇了spring,就不要再隨便用java了,其實(shí)spring本身也可以滿(mǎn)足你的需求的。
  
  系統有三個(gè)層級,web,前端,后端,看你需要什么,你可以選擇從web層開(kāi)始學(xué)習,這一塊java我推薦紅寶書(shū),而且至少要看兩遍以上,然后隨著(zhù)你的進(jìn)步,可以根據情況,學(xué)習下后端,熟悉框架是基礎,學(xué)習你不感興趣的,例如mybatis等等,這個(gè)看個(gè)人愛(ài)好,另外不要一上來(lái)就學(xué)大數據云平臺相關(guān)的技術(shù),容易害死你。
  java好啊,有官方文檔,

2020年,我們該如何學(xué)習 WEB 前端開(kāi)發(fā)?

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 119 次瀏覽 ? 2022-07-18 05:57 ? 來(lái)自相關(guān)話(huà)題

  2020年,我們該如何學(xué)習 WEB 前端開(kāi)發(fā)?
  每當想要開(kāi)始學(xué)習,腦子里總會(huì )跳出一系列問(wèn)題:WEB前端的學(xué)習先后順序是什么?PC端必須要掌握哪些知識和框架?移動(dòng)端要掌握哪些知識和框架?TypeScript和node.js是否為可學(xué)可不學(xué)?新手應該按照什么先后次第學(xué)習呢?本文是阿里巴巴淘系技術(shù)部高級前端工程師——小問(wèn)的個(gè)人經(jīng)驗總結,希望幫到處于迷茫期的你!
  我們可以把學(xué)習路線(xiàn)比作游戲中的段位上分,在不同的分段都有自己的定位和要鍛煉的事情:
  青銅—從零開(kāi)始小學(xué)生:懷著(zhù)滿(mǎn)腔的熱血,看到了這一個(gè)行業(yè)的希望和未來(lái),準備開(kāi)始學(xué)習 Web 開(kāi)發(fā)知識。
  白銀 —懵懵懂懂初學(xué)者:懂得如何使用 HTML、CSS 和 JavaScript 三大件來(lái)實(shí)現基本頁(yè)面開(kāi)發(fā)功能
  黃金—輕車(chē)熟路新玩家:懂得使用框架來(lái)實(shí)現上面所舉例項目
  鉑金 V—初出茅廬新司機: 懂得如何使用腳手架創(chuàng )建項目,并且能將代碼結構根據模塊化的思想進(jìn)行安排
  鉑金 I—基本上手好司機:如果是懂得如何利用 Node.js 或 TypeScript 編寫(xiě)業(yè)務(wù)代碼的
  鉆石 V—淡定自然老司機:如果是對邏輯抽象、模塊封裝有了一定的理解和經(jīng)驗的
  鉆石 I—賽道新手初學(xué)者:如果上面的條件你都已經(jīng)滿(mǎn)足了
  到這里我劃了一條從 0 到高級前端工程師級別的純技術(shù)路線(xiàn)。相信有不少有經(jīng)驗的同學(xué)會(huì )發(fā)現中間我省略了不少內容,但也不難發(fā)現路線(xiàn)中從前半段的“學(xué)習”逐步變成后半段的“思考”。優(yōu)秀的工程師除了需要有在純技術(shù)領(lǐng)域的沉淀以外,還需要更多對技術(shù)、團隊、ROI(投資回報率)的思考,當然這依然不足以支撐我們平穩地渡過(guò)“程序員 35 歲危機”,前面的路還有很長(cháng),鉆石往上還有王者呢,誰(shuí)說(shuō)程序員就是青春飯碗的?
  回想起很多年前我也跟你一樣是一個(gè)完全的新手,從 0 開(kāi)始慢慢自學(xué)摸索 Web 開(kāi)發(fā),甚至后來(lái)我也沒(méi)有進(jìn)入科班學(xué)習計算機,那么來(lái)聽(tīng)聽(tīng)我作為一個(gè)“前人”是如何完全靠自學(xué)至今的故事吧。
  我的從 0 開(kāi)始
  我是一個(gè)完全從自學(xué)開(kāi)始的前端工程師,想起來(lái)第一次接觸前端就是初中那會(huì )特別流行合租 VPS 然后注冊一個(gè) .tk 的免費域名。而作為一個(gè)剛入門(mén) Web 開(kāi)發(fā)不久的小屁孩來(lái)說(shuō),用這種方式一探“大人的世界”屬實(shí)讓人興奮。而當時(shí)最流行的博客管理軟件就是用 PHP 寫(xiě)的 WordPress,作為一個(gè)十分成熟的 CMS 軟件來(lái)說(shuō) WordPress 當時(shí)就有了非常豐富的社區資源,比如主題、模板、插件等等。
  而作為一個(gè)十分注重個(gè)性化的小屁孩來(lái)說(shuō),當然是要自己做一個(gè)主題的??!于是我就從此踏上了 Web 開(kāi)發(fā)的不歸路,在此之前我所接觸的都是 Visual Basic 這樣的 Native 的語(yǔ)言。
  以 WordPress 主題作為切入點(diǎn),我開(kāi)始學(xué)習 PHP 用于調用 WordPress 的 API 并輸出內容、學(xué)習 HTML 用于寫(xiě)主題的模板、學(xué)習 CSS 用于“裝潢”我的博客、學(xué)習 jQuery 用于實(shí)現頁(yè)面動(dòng)態(tài)效果。是的,那個(gè)時(shí)候基本上大部分人接觸的是 jQuery 而不是 JavaScript,一個(gè) $ 函數就可以完成非常多的效果這讓我第一次感受到了“框架”所帶來(lái)的價(jià)值。于是便一步一步地發(fā)生了以下事情(不一定完全對,畢竟時(shí)間過(guò)太久了):
  1、我發(fā)現頁(yè)面上的一些樣式效果無(wú)法在 IE 瀏覽器上正常顯示,于是我就開(kāi)始到網(wǎng)上學(xué)習 CSS 在 IE 的各種特殊處理,包括 reset.css、normalize.css 等工具的使用;
  
  2、每次點(diǎn)擊鏈接都要刷新頁(yè)面,在那個(gè)網(wǎng)速不怎么好的年代體驗非常糟糕,于是乎就開(kāi)始研究怎么用 jQuery/JavaScript 實(shí)現不需要刷新頁(yè)面的情況下切換頁(yè)面的內容;通過(guò)查看文檔發(fā)現瀏覽器支持一種叫做 XMLHTTPRequest 的技術(shù),可以讓我們不需要通過(guò)跳轉的方式從服務(wù)器獲取到信息,從這里開(kāi)始了解到 HTML、XML 和 JSON 三種不同格式的區別;
  第一次知道了可以通過(guò)服務(wù)器傳遞 JSON 格式的純數據,然后前端通過(guò) JavaScript 對數據進(jìn)行解析,并且結合前端的模板引擎渲染成完整的 HTML;
  從這里又可以學(xué)習到如何通過(guò) URL 中的 path、query、hash 以及 POST 和 PUT 請求正文等信息向服務(wù)器傳遞信息,服務(wù)器通過(guò)這些信息動(dòng)態(tài)地對各種數據進(jìn)行處理并返回結果;
  SPA(Single Page Application)開(kāi)發(fā)習慣初見(jiàn)雛形;
  這樣我就來(lái)到了“白銀”階段了。
  接觸 Node.js
  當我正在愉快地設計著(zhù) WordPress 的自定義主題時(shí),偶然間我在某前端網(wǎng)站上了解到了一個(gè)新的技術(shù) —— Node.js。與它的相遇改變了我以后的學(xué)習路徑,影響至今。
  2009 年 Ryan Dahl 發(fā)布了一個(gè)基于 Chrome JavaScript V8 引擎開(kāi)發(fā)的程序運行環(huán)境 Node.js,它允許開(kāi)發(fā)者在除了瀏覽器以外的地方運行 JavaScript 語(yǔ)言,并且提供一些標準庫允許 JavaScript 腳本啟動(dòng)進(jìn)行啟動(dòng)一個(gè) HTTP 服務(wù)端應用這種以前在瀏覽器無(wú)法完成的事情。
  var http = require('http');http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');}).listen(8124, "127.0.0.1");console.log('Server running at http://127.0.0.1:8124/');
  <br />
  這一份代碼是 2010 年寫(xiě)在 Node.js 官網(wǎng)的一段實(shí)例代碼,機緣巧合之下我被這么一段簡(jiǎn)單的代碼深深地吸引住了,雖然當時(shí)安裝它仍需要從 GitHub 上克隆整個(gè)項目代碼到本地并依次運行以下指令:
  $ ./configure$ make$ make install
  <br />
  這一次編譯就得花上至少十分鐘,但完成安裝后運行上面的一段代碼,并在瀏覽器中打開(kāi) :8124/,然后在瀏覽器上看到 Hello World 字樣時(shí)仿佛新世界的門(mén)打開(kāi)了。因為當時(shí)我所接觸過(guò)的服務(wù)端程序只有 PHP,而 PHP 本質(zhì)上就是一個(gè)模板引擎,它并不能很直觀(guān)地處理請求本身而是借助 CGI 進(jìn)行響應。能做更多的事情,這件事情對剛學(xué)習編程不久的新手來(lái)說(shuō)是具有很大誘惑力的。
  從這里開(kāi)始,Node.js 配合 npm 便開(kāi)始了長(cháng)達 10 年的快速發(fā)展。從純服務(wù)端應用開(kāi)發(fā),到開(kāi)發(fā)工具、工程工具,再到如今的 FaaS(Function as a Service,Serverless)開(kāi)發(fā)方式。Node.js 已經(jīng)成為 Web 工程師不可或缺的一項技能,不管是用來(lái)開(kāi)發(fā)服務(wù)端應用還是開(kāi)發(fā)工具類(lèi)應用,甚至是使用 Electron 開(kāi)發(fā)桌面端應用還是配合 React Native 開(kāi)發(fā)移動(dòng)端 App,Node.js 能讓前端工程師了解更多系統級別的概念,如網(wǎng)絡(luò )、I/O、內存、文件系統等等,這些很多都是原本在瀏覽器端上看不到的。而學(xué)習這些知識對你理解前端開(kāi)發(fā)背后的一些原理有非常好的價(jià)值,就跟學(xué)習算法一樣。
  結論:請學(xué)習 Node.js 和其中涉及到的一些基本計算機原理。
  框架時(shí)代
  當我在做 WordPress 主題的時(shí)候,絕大部分的主題開(kāi)發(fā)者都會(huì )在前端做一些簡(jiǎn)單的效果,甚至有甚者會(huì )通過(guò) JavaScript 實(shí)現一些原本只能通過(guò)后端來(lái)完成的事情,比如文章列表、文章內容的加載和渲染。而當年這些主題開(kāi)發(fā)者基本上都會(huì )使用 jQuery 來(lái)進(jìn)行這些 JavaScript 的操作,因為純手寫(xiě) JavaScript 在當時(shí)來(lái)說(shuō)非常的繁瑣(ES4時(shí)代,很多現在被廣泛使用的原生 API 都仍未具備)所以當時(shí) jQuery 就是大家的首選方案。
  
  從非常早的 PrototypeJS、后來(lái)的 jQuery、進(jìn)入 MVC 時(shí)代的 Backbone,AngularJS 開(kāi)啟 MVVM 模式,React 引入 FP 的概念,Vue 成功開(kāi)啟了漸進(jìn)式開(kāi)發(fā)體驗的道路。一路下來(lái)一地的雞毛,被各路人馬詬病前端領(lǐng)域一個(gè)月開(kāi)發(fā)一個(gè)新框架,“學(xué)不動(dòng)了”。然而作為一個(gè)也寫(xiě)過(guò)框架、寫(xiě)過(guò)工具類(lèi)庫的開(kāi)發(fā)者,我很喜歡用一個(gè)經(jīng)常用于泛科技領(lǐng)域的例子來(lái)類(lèi)比前端領(lǐng)域:
  科技的終極目標,就是讓人民感覺(jué)不到科技。
  jQuery 時(shí)代,前端開(kāi)發(fā)者使用 JavaScript 的模式是從頁(yè)面中獲取 DOM 元素,添加事件,然后通過(guò) class 和 style 對頁(yè)面進(jìn)行動(dòng)態(tài)地變更,以完成對用戶(hù)行為的響應;
  Backbone 時(shí)代,原本用在桌面端軟件開(kāi)發(fā)中的 MVC 模式被引入到了前端開(kāi)發(fā)中,前端開(kāi)發(fā)者們發(fā)現 Web 開(kāi)發(fā)的復雜度已經(jīng)需要用這些更成熟的開(kāi)發(fā)模式進(jìn)行管理了;
  AngularJS 時(shí)代,從這里開(kāi)始 Google 把數據雙向綁定模式帶到前端開(kāi)發(fā)中,將原本需要通過(guò) JavaScript 控制 DOM 元素這一繁瑣的操作變成了只需要關(guān)心 Model 層需要改動(dòng)什么內容即可。而 Vue 則將這種模式的開(kāi)發(fā)成本降低到了一種相當可觀(guān)的程度,讓很多新手開(kāi)發(fā)者也能很簡(jiǎn)單地入手這種便捷的開(kāi)發(fā)模式。React 時(shí)代,Facebook 的科學(xué)家們把函數式編程的思想引入到前端開(kāi)發(fā)中,注重的是數據鏈路的可跟蹤、可回溯、可管理,讓整個(gè)數據鏈路是盡可能以單鏈路流轉。
  雖然前端領(lǐng)域常被說(shuō)“一個(gè)月一個(gè)新框架”,但實(shí)際上每一個(gè)框架在迭代的過(guò)程中都是解決了它們所在業(yè)務(wù)場(chǎng)景的實(shí)際需求的,并不是“拍腦袋”地想要把每一個(gè)技術(shù)細節做出一個(gè) break change。
  而目前我目前推薦的學(xué)習的框架是 React 和 Vue:
  結論:請不要害怕學(xué)習!不要懼怕新技術(shù)!
  工程之路
  雖然我在接觸了框架和 Node.js 之后,發(fā)現 JavaScript 除了能實(shí)現一般只用于展示內容和呈現簡(jiǎn)單交互以外還能做更多的事情。但本質(zhì)上還是圍繞著(zhù)多個(gè)頁(yè)面進(jìn)行頁(yè)面上 DOM 元素的控制,而直到我打開(kāi)了 Google 的一些網(wǎng)站時(shí),我才發(fā)現原來(lái)網(wǎng)站除了能叫頁(yè)面以外,還能稱(chēng)之為“應用”。
  自從 Google 上線(xiàn)了一個(gè)完全不需要刷新頁(yè)面就能完成所有事情而且體驗很不錯的 GMail 之后,我們發(fā)現網(wǎng)頁(yè)原來(lái)也是可以承載那么復雜的邏輯和應用場(chǎng)景的。大家的熱情異常地高漲,想著(zhù)能不能讓自己所負責的項目也有這么厲害高級的樣子。但隨著(zhù)項目不斷地復雜,代碼規模也變得非常難以管理,而這個(gè)時(shí)候就需要工程化的引入。
  ? 工程化協(xié)作對于企業(yè)來(lái)說(shuō)除了研發(fā)效率要足夠高以外,研發(fā)鏈路的安全、合規也是同樣重要的。
  什么叫安全合規?可管理的代碼版本、可控制的發(fā)布流程、可管控的灰度機制,都是大廠(chǎng)用于保證項目流程穩定進(jìn)行的必要工具。
  有很多初學(xué)者或者還沒(méi)有大公司經(jīng)驗的同學(xué)在寫(xiě)項目時(shí)都是單打獨斗的,但更多的一線(xiàn)項目都需要至少 2~3 個(gè)甚至更多的人員一同參與開(kāi)發(fā)的。
  而這種時(shí)候,因為每個(gè)人的水平和開(kāi)發(fā)習慣都是不一致的,而這些不一致就直接導致整體研發(fā)效率和項目進(jìn)度受到極大的影響。所以就需要一種能夠讓大家在一個(gè)水平線(xiàn)上進(jìn)行開(kāi)發(fā)的模式,工程化需求便應運而生。
  ? 工程化開(kāi)發(fā)工具
  從直接將 JavaScript 代碼用 查看全部

  2020年,我們該如何學(xué)習 WEB 前端開(kāi)發(fā)?
  每當想要開(kāi)始學(xué)習,腦子里總會(huì )跳出一系列問(wèn)題:WEB前端的學(xué)習先后順序是什么?PC端必須要掌握哪些知識和框架?移動(dòng)端要掌握哪些知識和框架?TypeScript和node.js是否為可學(xué)可不學(xué)?新手應該按照什么先后次第學(xué)習呢?本文是阿里巴巴淘系技術(shù)部高級前端工程師——小問(wèn)的個(gè)人經(jīng)驗總結,希望幫到處于迷茫期的你!
  我們可以把學(xué)習路線(xiàn)比作游戲中的段位上分,在不同的分段都有自己的定位和要鍛煉的事情:
  青銅—從零開(kāi)始小學(xué)生:懷著(zhù)滿(mǎn)腔的熱血,看到了這一個(gè)行業(yè)的希望和未來(lái),準備開(kāi)始學(xué)習 Web 開(kāi)發(fā)知識。
  白銀 —懵懵懂懂初學(xué)者:懂得如何使用 HTML、CSS 和 JavaScript 三大件來(lái)實(shí)現基本頁(yè)面開(kāi)發(fā)功能
  黃金—輕車(chē)熟路新玩家:懂得使用框架來(lái)實(shí)現上面所舉例項目
  鉑金 V—初出茅廬新司機: 懂得如何使用腳手架創(chuàng )建項目,并且能將代碼結構根據模塊化的思想進(jìn)行安排
  鉑金 I—基本上手好司機:如果是懂得如何利用 Node.js 或 TypeScript 編寫(xiě)業(yè)務(wù)代碼的
  鉆石 V—淡定自然老司機:如果是對邏輯抽象、模塊封裝有了一定的理解和經(jīng)驗的
  鉆石 I—賽道新手初學(xué)者:如果上面的條件你都已經(jīng)滿(mǎn)足了
  到這里我劃了一條從 0 到高級前端工程師級別的純技術(shù)路線(xiàn)。相信有不少有經(jīng)驗的同學(xué)會(huì )發(fā)現中間我省略了不少內容,但也不難發(fā)現路線(xiàn)中從前半段的“學(xué)習”逐步變成后半段的“思考”。優(yōu)秀的工程師除了需要有在純技術(shù)領(lǐng)域的沉淀以外,還需要更多對技術(shù)、團隊、ROI(投資回報率)的思考,當然這依然不足以支撐我們平穩地渡過(guò)“程序員 35 歲危機”,前面的路還有很長(cháng),鉆石往上還有王者呢,誰(shuí)說(shuō)程序員就是青春飯碗的?
  回想起很多年前我也跟你一樣是一個(gè)完全的新手,從 0 開(kāi)始慢慢自學(xué)摸索 Web 開(kāi)發(fā),甚至后來(lái)我也沒(méi)有進(jìn)入科班學(xué)習計算機,那么來(lái)聽(tīng)聽(tīng)我作為一個(gè)“前人”是如何完全靠自學(xué)至今的故事吧。
  我的從 0 開(kāi)始
  我是一個(gè)完全從自學(xué)開(kāi)始的前端工程師,想起來(lái)第一次接觸前端就是初中那會(huì )特別流行合租 VPS 然后注冊一個(gè) .tk 的免費域名。而作為一個(gè)剛入門(mén) Web 開(kāi)發(fā)不久的小屁孩來(lái)說(shuō),用這種方式一探“大人的世界”屬實(shí)讓人興奮。而當時(shí)最流行的博客管理軟件就是用 PHP 寫(xiě)的 WordPress,作為一個(gè)十分成熟的 CMS 軟件來(lái)說(shuō) WordPress 當時(shí)就有了非常豐富的社區資源,比如主題、模板、插件等等。
  而作為一個(gè)十分注重個(gè)性化的小屁孩來(lái)說(shuō),當然是要自己做一個(gè)主題的??!于是我就從此踏上了 Web 開(kāi)發(fā)的不歸路,在此之前我所接觸的都是 Visual Basic 這樣的 Native 的語(yǔ)言。
  以 WordPress 主題作為切入點(diǎn),我開(kāi)始學(xué)習 PHP 用于調用 WordPress 的 API 并輸出內容、學(xué)習 HTML 用于寫(xiě)主題的模板、學(xué)習 CSS 用于“裝潢”我的博客、學(xué)習 jQuery 用于實(shí)現頁(yè)面動(dòng)態(tài)效果。是的,那個(gè)時(shí)候基本上大部分人接觸的是 jQuery 而不是 JavaScript,一個(gè) $ 函數就可以完成非常多的效果這讓我第一次感受到了“框架”所帶來(lái)的價(jià)值。于是便一步一步地發(fā)生了以下事情(不一定完全對,畢竟時(shí)間過(guò)太久了):
  1、我發(fā)現頁(yè)面上的一些樣式效果無(wú)法在 IE 瀏覽器上正常顯示,于是我就開(kāi)始到網(wǎng)上學(xué)習 CSS 在 IE 的各種特殊處理,包括 reset.css、normalize.css 等工具的使用;
  
  2、每次點(diǎn)擊鏈接都要刷新頁(yè)面,在那個(gè)網(wǎng)速不怎么好的年代體驗非常糟糕,于是乎就開(kāi)始研究怎么用 jQuery/JavaScript 實(shí)現不需要刷新頁(yè)面的情況下切換頁(yè)面的內容;通過(guò)查看文檔發(fā)現瀏覽器支持一種叫做 XMLHTTPRequest 的技術(shù),可以讓我們不需要通過(guò)跳轉的方式從服務(wù)器獲取到信息,從這里開(kāi)始了解到 HTML、XML 和 JSON 三種不同格式的區別;
  第一次知道了可以通過(guò)服務(wù)器傳遞 JSON 格式的純數據,然后前端通過(guò) JavaScript 對數據進(jìn)行解析,并且結合前端的模板引擎渲染成完整的 HTML;
  從這里又可以學(xué)習到如何通過(guò) URL 中的 path、query、hash 以及 POST 和 PUT 請求正文等信息向服務(wù)器傳遞信息,服務(wù)器通過(guò)這些信息動(dòng)態(tài)地對各種數據進(jìn)行處理并返回結果;
  SPA(Single Page Application)開(kāi)發(fā)習慣初見(jiàn)雛形;
  這樣我就來(lái)到了“白銀”階段了。
  接觸 Node.js
  當我正在愉快地設計著(zhù) WordPress 的自定義主題時(shí),偶然間我在某前端網(wǎng)站上了解到了一個(gè)新的技術(shù) —— Node.js。與它的相遇改變了我以后的學(xué)習路徑,影響至今。
  2009 年 Ryan Dahl 發(fā)布了一個(gè)基于 Chrome JavaScript V8 引擎開(kāi)發(fā)的程序運行環(huán)境 Node.js,它允許開(kāi)發(fā)者在除了瀏覽器以外的地方運行 JavaScript 語(yǔ)言,并且提供一些標準庫允許 JavaScript 腳本啟動(dòng)進(jìn)行啟動(dòng)一個(gè) HTTP 服務(wù)端應用這種以前在瀏覽器無(wú)法完成的事情。
  var http = require('http');http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');}).listen(8124, "127.0.0.1");console.log('Server running at http://127.0.0.1:8124/');
  <br />
  這一份代碼是 2010 年寫(xiě)在 Node.js 官網(wǎng)的一段實(shí)例代碼,機緣巧合之下我被這么一段簡(jiǎn)單的代碼深深地吸引住了,雖然當時(shí)安裝它仍需要從 GitHub 上克隆整個(gè)項目代碼到本地并依次運行以下指令:
  $ ./configure$ make$ make install
  <br />
  這一次編譯就得花上至少十分鐘,但完成安裝后運行上面的一段代碼,并在瀏覽器中打開(kāi) :8124/,然后在瀏覽器上看到 Hello World 字樣時(shí)仿佛新世界的門(mén)打開(kāi)了。因為當時(shí)我所接觸過(guò)的服務(wù)端程序只有 PHP,而 PHP 本質(zhì)上就是一個(gè)模板引擎,它并不能很直觀(guān)地處理請求本身而是借助 CGI 進(jìn)行響應。能做更多的事情,這件事情對剛學(xué)習編程不久的新手來(lái)說(shuō)是具有很大誘惑力的。
  從這里開(kāi)始,Node.js 配合 npm 便開(kāi)始了長(cháng)達 10 年的快速發(fā)展。從純服務(wù)端應用開(kāi)發(fā),到開(kāi)發(fā)工具、工程工具,再到如今的 FaaS(Function as a Service,Serverless)開(kāi)發(fā)方式。Node.js 已經(jīng)成為 Web 工程師不可或缺的一項技能,不管是用來(lái)開(kāi)發(fā)服務(wù)端應用還是開(kāi)發(fā)工具類(lèi)應用,甚至是使用 Electron 開(kāi)發(fā)桌面端應用還是配合 React Native 開(kāi)發(fā)移動(dòng)端 App,Node.js 能讓前端工程師了解更多系統級別的概念,如網(wǎng)絡(luò )、I/O、內存、文件系統等等,這些很多都是原本在瀏覽器端上看不到的。而學(xué)習這些知識對你理解前端開(kāi)發(fā)背后的一些原理有非常好的價(jià)值,就跟學(xué)習算法一樣。
  結論:請學(xué)習 Node.js 和其中涉及到的一些基本計算機原理。
  框架時(shí)代
  當我在做 WordPress 主題的時(shí)候,絕大部分的主題開(kāi)發(fā)者都會(huì )在前端做一些簡(jiǎn)單的效果,甚至有甚者會(huì )通過(guò) JavaScript 實(shí)現一些原本只能通過(guò)后端來(lái)完成的事情,比如文章列表、文章內容的加載和渲染。而當年這些主題開(kāi)發(fā)者基本上都會(huì )使用 jQuery 來(lái)進(jìn)行這些 JavaScript 的操作,因為純手寫(xiě) JavaScript 在當時(shí)來(lái)說(shuō)非常的繁瑣(ES4時(shí)代,很多現在被廣泛使用的原生 API 都仍未具備)所以當時(shí) jQuery 就是大家的首選方案。
  
  從非常早的 PrototypeJS、后來(lái)的 jQuery、進(jìn)入 MVC 時(shí)代的 Backbone,AngularJS 開(kāi)啟 MVVM 模式,React 引入 FP 的概念,Vue 成功開(kāi)啟了漸進(jìn)式開(kāi)發(fā)體驗的道路。一路下來(lái)一地的雞毛,被各路人馬詬病前端領(lǐng)域一個(gè)月開(kāi)發(fā)一個(gè)新框架,“學(xué)不動(dòng)了”。然而作為一個(gè)也寫(xiě)過(guò)框架、寫(xiě)過(guò)工具類(lèi)庫的開(kāi)發(fā)者,我很喜歡用一個(gè)經(jīng)常用于泛科技領(lǐng)域的例子來(lái)類(lèi)比前端領(lǐng)域:
  科技的終極目標,就是讓人民感覺(jué)不到科技。
  jQuery 時(shí)代,前端開(kāi)發(fā)者使用 JavaScript 的模式是從頁(yè)面中獲取 DOM 元素,添加事件,然后通過(guò) class 和 style 對頁(yè)面進(jìn)行動(dòng)態(tài)地變更,以完成對用戶(hù)行為的響應;
  Backbone 時(shí)代,原本用在桌面端軟件開(kāi)發(fā)中的 MVC 模式被引入到了前端開(kāi)發(fā)中,前端開(kāi)發(fā)者們發(fā)現 Web 開(kāi)發(fā)的復雜度已經(jīng)需要用這些更成熟的開(kāi)發(fā)模式進(jìn)行管理了;
  AngularJS 時(shí)代,從這里開(kāi)始 Google 把數據雙向綁定模式帶到前端開(kāi)發(fā)中,將原本需要通過(guò) JavaScript 控制 DOM 元素這一繁瑣的操作變成了只需要關(guān)心 Model 層需要改動(dòng)什么內容即可。而 Vue 則將這種模式的開(kāi)發(fā)成本降低到了一種相當可觀(guān)的程度,讓很多新手開(kāi)發(fā)者也能很簡(jiǎn)單地入手這種便捷的開(kāi)發(fā)模式。React 時(shí)代,Facebook 的科學(xué)家們把函數式編程的思想引入到前端開(kāi)發(fā)中,注重的是數據鏈路的可跟蹤、可回溯、可管理,讓整個(gè)數據鏈路是盡可能以單鏈路流轉。
  雖然前端領(lǐng)域常被說(shuō)“一個(gè)月一個(gè)新框架”,但實(shí)際上每一個(gè)框架在迭代的過(guò)程中都是解決了它們所在業(yè)務(wù)場(chǎng)景的實(shí)際需求的,并不是“拍腦袋”地想要把每一個(gè)技術(shù)細節做出一個(gè) break change。
  而目前我目前推薦的學(xué)習的框架是 React 和 Vue:
  結論:請不要害怕學(xué)習!不要懼怕新技術(shù)!
  工程之路
  雖然我在接觸了框架和 Node.js 之后,發(fā)現 JavaScript 除了能實(shí)現一般只用于展示內容和呈現簡(jiǎn)單交互以外還能做更多的事情。但本質(zhì)上還是圍繞著(zhù)多個(gè)頁(yè)面進(jìn)行頁(yè)面上 DOM 元素的控制,而直到我打開(kāi)了 Google 的一些網(wǎng)站時(shí),我才發(fā)現原來(lái)網(wǎng)站除了能叫頁(yè)面以外,還能稱(chēng)之為“應用”。
  自從 Google 上線(xiàn)了一個(gè)完全不需要刷新頁(yè)面就能完成所有事情而且體驗很不錯的 GMail 之后,我們發(fā)現網(wǎng)頁(yè)原來(lái)也是可以承載那么復雜的邏輯和應用場(chǎng)景的。大家的熱情異常地高漲,想著(zhù)能不能讓自己所負責的項目也有這么厲害高級的樣子。但隨著(zhù)項目不斷地復雜,代碼規模也變得非常難以管理,而這個(gè)時(shí)候就需要工程化的引入。
  ? 工程化協(xié)作對于企業(yè)來(lái)說(shuō)除了研發(fā)效率要足夠高以外,研發(fā)鏈路的安全、合規也是同樣重要的。
  什么叫安全合規?可管理的代碼版本、可控制的發(fā)布流程、可管控的灰度機制,都是大廠(chǎng)用于保證項目流程穩定進(jìn)行的必要工具。
  有很多初學(xué)者或者還沒(méi)有大公司經(jīng)驗的同學(xué)在寫(xiě)項目時(shí)都是單打獨斗的,但更多的一線(xiàn)項目都需要至少 2~3 個(gè)甚至更多的人員一同參與開(kāi)發(fā)的。
  而這種時(shí)候,因為每個(gè)人的水平和開(kāi)發(fā)習慣都是不一致的,而這些不一致就直接導致整體研發(fā)效率和項目進(jìn)度受到極大的影響。所以就需要一種能夠讓大家在一個(gè)水平線(xiàn)上進(jìn)行開(kāi)發(fā)的模式,工程化需求便應運而生。
  ? 工程化開(kāi)發(fā)工具
  從直接將 JavaScript 代碼用

老九發(fā)布10個(gè)基于java的cms網(wǎng)站內容管理系統方案說(shuō)明

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 103 次瀏覽 ? 2022-07-13 07:05 ? 來(lái)自相關(guān)話(huà)題

  老九發(fā)布10個(gè)基于java的cms網(wǎng)站內容管理系統方案說(shuō)明
  
  10個(gè)基于java的cms網(wǎng)站內容管理系統方案說(shuō)明本文由探索編程做的簡(jiǎn)單的總結,不代表老九發(fā)布于cms平臺的技術(shù)解讀。項目采用shop++為模板,在后臺進(jìn)行簡(jiǎn)單的網(wǎng)頁(yè)開(kāi)發(fā),在模板中首頁(yè)、管理、分類(lèi)、列表、搜索、商品頁(yè)面定制。1.lnmp安裝和上線(xiàn)2.數據庫導入數據庫通過(guò)jdbc導入數據庫。管理系統通過(guò)maven上線(xiàn),maven按照業(yè)務(wù)層別導入數據庫。
  
  redis通過(guò)hello(key)讀取數據庫。redis集群。3.數據導出redis數據導出通過(guò)maven導入數據庫。mysql和mssql組成二層關(guān)系,將mysql導出的jdbcartifact導入redis,通過(guò)配置路由,mysql可以通過(guò)jdbc直接連接redis。4.在線(xiàn)響應爬蟲(chóng)通過(guò)一段短代碼部署在線(xiàn)登錄;數據使用google開(kāi)源的clientmanager更新5.集群后臺管理服務(wù)組建,開(kāi)始搭建后臺管理系統(主要是了解整個(gè)組建)6.數據分析使用pyspark,線(xiàn)上服務(wù)由于接入的數據量較大,配置繁瑣,故采用maven在線(xiàn)集群機制來(lái)管理,優(yōu)化工作量,可達到滿(mǎn)足實(shí)際需求。
  7.文件共享代碼可以通過(guò)nginx和mongodb連接,以p3協(xié)議進(jìn)行文件共享。8.二次開(kāi)發(fā)服務(wù)可以通過(guò)java與.netcore工具集做二次開(kāi)發(fā),包括但不限于登錄認證,用戶(hù)管理,網(wǎng)站信息頁(yè)面,甚至是代碼在javaee開(kāi)發(fā)中也應該考慮ioen。9.運維維護代碼從去年開(kāi)始,每個(gè)團隊都有建立一個(gè)代碼倉庫,初期即使整個(gè)團隊維護,也并不夠用,組織一個(gè)實(shí)習的開(kāi)發(fā)人員維護也是要花費時(shí)間,因此項目上線(xiàn)之后通過(guò)實(shí)習生維護,可達到代碼及時(shí)交付,并且容易維護更新。截至發(fā)文,加上老八校實(shí)習生維護共三個(gè)月。-最近工作流程較為忙碌,停更一段時(shí)間,多多關(guān)照,謝謝~。 查看全部

  老九發(fā)布10個(gè)基于java的cms網(wǎng)站內容管理系統方案說(shuō)明
  
  10個(gè)基于java的cms網(wǎng)站內容管理系統方案說(shuō)明本文由探索編程做的簡(jiǎn)單的總結,不代表老九發(fā)布于cms平臺的技術(shù)解讀。項目采用shop++為模板,在后臺進(jìn)行簡(jiǎn)單的網(wǎng)頁(yè)開(kāi)發(fā),在模板中首頁(yè)、管理、分類(lèi)、列表、搜索、商品頁(yè)面定制。1.lnmp安裝和上線(xiàn)2.數據庫導入數據庫通過(guò)jdbc導入數據庫。管理系統通過(guò)maven上線(xiàn),maven按照業(yè)務(wù)層別導入數據庫。
  
  redis通過(guò)hello(key)讀取數據庫。redis集群。3.數據導出redis數據導出通過(guò)maven導入數據庫。mysql和mssql組成二層關(guān)系,將mysql導出的jdbcartifact導入redis,通過(guò)配置路由,mysql可以通過(guò)jdbc直接連接redis。4.在線(xiàn)響應爬蟲(chóng)通過(guò)一段短代碼部署在線(xiàn)登錄;數據使用google開(kāi)源的clientmanager更新5.集群后臺管理服務(wù)組建,開(kāi)始搭建后臺管理系統(主要是了解整個(gè)組建)6.數據分析使用pyspark,線(xiàn)上服務(wù)由于接入的數據量較大,配置繁瑣,故采用maven在線(xiàn)集群機制來(lái)管理,優(yōu)化工作量,可達到滿(mǎn)足實(shí)際需求。
  7.文件共享代碼可以通過(guò)nginx和mongodb連接,以p3協(xié)議進(jìn)行文件共享。8.二次開(kāi)發(fā)服務(wù)可以通過(guò)java與.netcore工具集做二次開(kāi)發(fā),包括但不限于登錄認證,用戶(hù)管理,網(wǎng)站信息頁(yè)面,甚至是代碼在javaee開(kāi)發(fā)中也應該考慮ioen。9.運維維護代碼從去年開(kāi)始,每個(gè)團隊都有建立一個(gè)代碼倉庫,初期即使整個(gè)團隊維護,也并不夠用,組織一個(gè)實(shí)習的開(kāi)發(fā)人員維護也是要花費時(shí)間,因此項目上線(xiàn)之后通過(guò)實(shí)習生維護,可達到代碼及時(shí)交付,并且容易維護更新。截至發(fā)文,加上老八校實(shí)習生維護共三個(gè)月。-最近工作流程較為忙碌,停更一段時(shí)間,多多關(guān)照,謝謝~。

10個(gè)基于java的cms網(wǎng)站內容管理系統方案(圖)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 106 次瀏覽 ? 2022-06-30 15:01 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統方案(圖)
  10個(gè)基于java的cms網(wǎng)站內容管理系統方案淺析如果你覺(jué)得上面的內容對你很有幫助,請點(diǎn)贊關(guān)注,如果你覺(jué)得對你有幫助,請點(diǎn)擊加關(guān)注,如果覺(jué)得對你有幫助,請點(diǎn)擊加關(guān)注。
  
  java可以通過(guò)nimjs實(shí)現,代碼可以通過(guò)github上找到。另外可以通過(guò)開(kāi)發(fā)一個(gè)可讀性高,輕量級的storage系統來(lái)實(shí)現。
  先說(shuō)一點(diǎn),移動(dòng)互聯(lián)網(wǎng)方面java開(kāi)發(fā)要比c++困難一些。如果不能通過(guò)java開(kāi)發(fā)的網(wǎng)站,想象一下要寫(xiě)多難看的代碼。
  
  blog的模式可以使用現在的社交客戶(hù)端或者hybrid網(wǎng)頁(yè)的模式,這兩個(gè)都可以看作是sns在移動(dòng)端的封裝,都可以作為你實(shí)現個(gè)人網(wǎng)站的切入點(diǎn)。當然,這個(gè)前提是你要把產(chǎn)品定位和市場(chǎng)確定好,否則就相當于在說(shuō):等有了用戶(hù)覺(jué)得你做得不錯了,再搞個(gè)網(wǎng)站吧。
  豆瓣啊。如果你看過(guò)這個(gè),就知道有多可怕??梢赃@么做,把豆瓣網(wǎng)改版,從移動(dòng)端實(shí)現,如果加上小組,豆瓣和你個(gè)人網(wǎng)站可以通過(guò)與豆瓣網(wǎng)的feed消息功能整合,整合以后感覺(jué)一下。如果再加上你的社區內容,很可怕。不過(guò)這些都是你自己想象吧,不做下去到時(shí)候會(huì )更絕望。
  增加互動(dòng)。比如興趣相投,可以組一個(gè)小組,天南海北的加入,這樣你會(huì )做得更專(zhuān)業(yè)。最好可以和facebook產(chǎn)生一些合作。這樣玩才可以真正的usergeneratedforallapps。 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統方案(圖)
  10個(gè)基于java的cms網(wǎng)站內容管理系統方案淺析如果你覺(jué)得上面的內容對你很有幫助,請點(diǎn)贊關(guān)注,如果你覺(jué)得對你有幫助,請點(diǎn)擊加關(guān)注,如果覺(jué)得對你有幫助,請點(diǎn)擊加關(guān)注。
  
  java可以通過(guò)nimjs實(shí)現,代碼可以通過(guò)github上找到。另外可以通過(guò)開(kāi)發(fā)一個(gè)可讀性高,輕量級的storage系統來(lái)實(shí)現。
  先說(shuō)一點(diǎn),移動(dòng)互聯(lián)網(wǎng)方面java開(kāi)發(fā)要比c++困難一些。如果不能通過(guò)java開(kāi)發(fā)的網(wǎng)站,想象一下要寫(xiě)多難看的代碼。
  
  blog的模式可以使用現在的社交客戶(hù)端或者hybrid網(wǎng)頁(yè)的模式,這兩個(gè)都可以看作是sns在移動(dòng)端的封裝,都可以作為你實(shí)現個(gè)人網(wǎng)站的切入點(diǎn)。當然,這個(gè)前提是你要把產(chǎn)品定位和市場(chǎng)確定好,否則就相當于在說(shuō):等有了用戶(hù)覺(jué)得你做得不錯了,再搞個(gè)網(wǎng)站吧。
  豆瓣啊。如果你看過(guò)這個(gè),就知道有多可怕??梢赃@么做,把豆瓣網(wǎng)改版,從移動(dòng)端實(shí)現,如果加上小組,豆瓣和你個(gè)人網(wǎng)站可以通過(guò)與豆瓣網(wǎng)的feed消息功能整合,整合以后感覺(jué)一下。如果再加上你的社區內容,很可怕。不過(guò)這些都是你自己想象吧,不做下去到時(shí)候會(huì )更絕望。
  增加互動(dòng)。比如興趣相投,可以組一個(gè)小組,天南海北的加入,這樣你會(huì )做得更專(zhuān)業(yè)。最好可以和facebook產(chǎn)生一些合作。這樣玩才可以真正的usergeneratedforallapps。

推薦 16 個(gè)優(yōu)秀的 Vue 開(kāi)源項目

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 403 次瀏覽 ? 2022-06-23 11:36 ? 來(lái)自相關(guān)話(huà)題

  推薦 16 個(gè)優(yōu)秀的 Vue 開(kāi)源項目
  01CMSand Generators
  頁(yè)面工具包
  
  Pagekit 是一個(gè)開(kāi)源的CMS,在Vue. js 和Symphony框架的幫助下構建。CMS是模塊化的,所以你可以逐步擴展功能。Pagekit是在MIT許可證下發(fā)布的,因此它可以自由地修改、共享和重新發(fā)布,沒(méi)有任何限制。
  該產(chǎn)品具有CMS的所有主要和高級功能:
  ·可定制的分析儀表板與網(wǎng)站性能;
  ·網(wǎng)站內容編輯頁(yè)面;
  ·內置博客;
  ·HTML和Markdown 編輯器;
  ·文件管理器;
  ·用戶(hù)角色管理。
  還有一些東西和特點(diǎn)對開(kāi)發(fā)者特別有用。該產(chǎn)品使用簡(jiǎn)單的ORM、模塊化架構和包管理構建。還有一個(gè)內置的調試工具欄,可以幫助開(kāi)發(fā)人員監視性能、路由、數據庫查詢(xún)和調試內部系統事件、擴展甚至可以添加自己的功能。另外,也可以使用CLI執行系統更新、安裝和卸載擴展和主題,以及直接從終端清除緩存。
  該產(chǎn)品有一個(gè)強大的貢獻指南,團隊歡迎人們來(lái)修復錯誤,翻譯或擴展CMS的功能。社區沒(méi)有那么大,但非常發(fā)達,熱心幫助新人。
  因此,這是一個(gè)非常強大的產(chǎn)品,具有非常全面的文檔和透明的貢獻指南。開(kāi)啟開(kāi)源世界之路的絕佳選擇。
  02Vuepress
  
  VuePress 是一個(gè)由Vue. js 作者EvanYou 創(chuàng )建的基于Vue的靜態(tài)站點(diǎn)生成器。在VuePress 幫助下,網(wǎng)站創(chuàng )建使用VueRouter 、Vue和webpack 。最初,該產(chǎn)品是作為編寫(xiě)技術(shù)文檔的工具而創(chuàng )建的,但現在它是一個(gè)小型、緊湊、功能強大的headless CMS 。在VuePress 中你用Markdown 寫(xiě)內容,然后轉換成預渲染的靜態(tài)HTML文件。
  該項目有一個(gè)組織良好的捐款指南,工作流程透明。它還有很好的問(wèn)題管理功能。社區有超過(guò)300個(gè)活躍貢獻者,他們可以支持你。這是你開(kāi)始為開(kāi)源項目做貢獻的好選擇。
  03Vue店面
  
  Vuestorefront是一款面向電子商務(wù)的PWA,可以連接到幾乎任何電子商務(wù)后端:它使用了headless 架構。這包括流行的BigCommerce 平臺、Magento、Shopware 等。VueStorefront 的一些優(yōu)勢包括移動(dòng)優(yōu)先的方法、服務(wù)器端渲染(有利于SEO)和離線(xiàn)模式。
  該產(chǎn)品擁有一個(gè)發(fā)達的社區:Slack中約有2000名開(kāi)發(fā)者和180多名活躍貢獻者。這是特別有價(jià)值的,因為團隊有一個(gè)清晰的路線(xiàn)圖,所以你作為一個(gè)貢獻者可以選擇你可以做的任務(wù)??傊?,這是一個(gè)非常有趣的,支持和需要在上面花時(shí)間的產(chǎn)品。
  04Vuegg
  
  Vuegg 允許您將組件直接拖放到可視化編輯器中,并根據你的選擇移動(dòng)它們的大小,從而構建Vue. js 項目。這個(gè)項目的目的是合并設計和原型到一個(gè)單一的過(guò)程。
  顯著(zhù)特征:
  ·通過(guò)拖放組件和移動(dòng)/調整它們的大小來(lái)模擬/還原它們;
  ·支持標準鼠標和鍵盤(pán)組合;
  ·響應式預覽(手機、平板電腦、網(wǎng)絡(luò ));
  ·一組基本的HTML5元素;
  ·材料設計組件(vue- mdc - adapter );
  ·Vuejs 源代碼生成(download . zip )。
  這個(gè)項目有一個(gè)清晰的路線(xiàn)圖,你可以直接在Github上看到。由于該項目是相當新的,仍在進(jìn)行中的工作沒(méi)有貢獻指南,但你可以自由的打開(kāi)任何問(wèn)題和公關(guān)。
  05Gridsome
  
  Gridsome 與VuePress有許多相似之處,但它采用了一種不同的非常強大的方法來(lái)處理數據源。它允許你連接并使用應用中的許多不同類(lèi)型的數據,然后將這些數據統一到一個(gè)GraphQL 層中?;旧?,Gridsome 的前端功能用Vue,數據管理用GraphQL 。
  工作方式可以概括為以下三個(gè)步驟:
  你提供Markdown 、JSON、YAML或CVS數據格式的內容,或者從WordPress或Drupal等CMS導入內容;
  內容轉化為一個(gè)GraphQL 層,提供集中的數據管理;
  然后用這些數據用Vue構建你的應用。
  在開(kāi)發(fā)方面,文檔有一個(gè)清晰的路線(xiàn)圖、一個(gè)描述良好的更改日志和一個(gè)貢獻指南。投稿是一個(gè)不錯的選擇。
  06UI組件
  Vuetify
  
  Vuetify 根據MaterialDesign 規范提供了大量精心制作的組件(80 +)。Vueti fy 結合了Vue. js 和Material的所有優(yōu)點(diǎn)。該框架是與RTL和VueCLI - 3 兼容。Vuetify 的所有組件都有很好的記錄,也有清晰的示例。它與Vue的服務(wù)器端渲染(SSR)一起工作。Vuetify 支持所有現代網(wǎng)絡(luò )瀏覽器——甚至是IE11 和Safari9 +(使用多功能填充)。它還提供了現成的項目腳手架,這樣您就可以用一個(gè)命令開(kāi)始構建您的Vue. js 應用程序。
  它提供了一組基于材料設計的組件,例如:
  ·按鈕;
  ·投入;
  ·卡片;
  ·表,
  ·清單。
  Vuetify 背后有一個(gè)充滿(mǎn)活力的社區,有超過(guò)500個(gè)貢獻者,他們創(chuàng )建了許多Vuetify 插件。它具有成為一個(gè)好的開(kāi)源的所有主要組件:廣泛的文檔、貢獻指南、問(wèn)題管理。但在我們看來(lái),這很難做出貢獻,因為社區已經(jīng)很大了。
  07Buefy
  
  Buefy基于Bulma為Vue. js 提供了輕量級的UI組件。Buefy有兩個(gè)核心原則:讓事情簡(jiǎn)單化,輕量化。這也解釋了為什么它唯一的依賴(lài)是Vue和Bulma 。雖然它只有40多個(gè)組件,但它為你提供了隨時(shí)可用的移動(dòng)優(yōu)先和響應式的UI組件。
  特點(diǎn):
  ·支持MaterialDesign 圖標和FontAwesome ;
  ·非常輕便,除了Vue& Bu lma 之外沒(méi)有內部依賴(lài);
  ·約88KB min + gzip ;
  ·語(yǔ)義代碼輸出。
  08VueMaterial
  
  VUEMaterial簡(jiǎn)單,輕巧,完全按照GoogleMaterial Design規范建造。VUE材料提供超過(guò)56個(gè)組件來(lái)構建不同類(lèi)型的布局。一個(gè)偉大的事情是材料設計框架有真正徹底的文檔。該框架非常輕量級,包含完整的組件,完全符合GoogleMaterial Design準則。這種設計適合每一個(gè)屏幕,并支持每一個(gè)現代瀏覽器。
  路線(xiàn)圖、貢獻指南、好的文檔和更新日志都在這里。對于喜歡UI項目的開(kāi)發(fā)者來(lái)說(shuō),是一個(gè)不錯的選擇。
  09應用
  Koel
  Koel是一個(gè)個(gè)人音樂(lè )流媒體服務(wù),你可以根據你的需要定制??蛻?hù)端用Vue編寫(xiě),后端用Laravel編寫(xiě)。koel以web開(kāi)發(fā)者為目標,采用了一些更現代化的web技術(shù),比如flexbox 、音頻和拖放api等等。
  這個(gè)項目在Github上相當受歡迎,有52個(gè)貢獻者。不幸的是,沒(méi)有詳細的貢獻指南,但是作者在Github上寫(xiě)道,在你提交任何東西之前,你需要打開(kāi)一個(gè)問(wèn)題。還有一個(gè)通過(guò)Opencollective 贊助該項目的選項。
  我們喜歡這個(gè)項目背后的想法,使一個(gè)流媒體服務(wù),將由社區開(kāi)發(fā)。因此,如果你熱愛(ài)音樂(lè ),想要提高自己的Vue技能,投稿會(huì )是一個(gè)不錯的選擇。
  10Eagle.js
  
  Eagle. js 是使用Vue構建的強大、靈活、獨特的幻燈片顯示系統。它允許你在演示文稿中創(chuàng )建易于重用的組件、幻燈片和樣式。它還支持動(dòng)畫(huà),主題,和互動(dòng)小部件,這是偉大的網(wǎng)頁(yè)演示。微信搜索公眾號:Java后端編程,回復:java 領(lǐng)取資料 。
  使用這個(gè)庫可以做的最重要的事情之一是將幻燈片放在單獨的文件中,然后在其他幻燈片顯示中重用它。你還可以將特定幻燈片顯示的幻燈片導入另一個(gè)幻燈片。創(chuàng )建者還提供了幾個(gè)模板,可以輕松地開(kāi)始開(kāi)發(fā)。
  這個(gè)項目有一個(gè)貢獻指南,里面有你可以提供幫助的想法。我們認為這是一個(gè)值得花時(shí)間做的好項目:它真的幫助了很多人做演示。此外,在Eagle的幫助下,開(kāi)始學(xué)習Vue很容易。
  11工具包
  Nuxt.js
  
  Nuxt是一個(gè)用于構建通用應用程序的簡(jiǎn)單而直接的框架:服務(wù)器呈現的應用、單頁(yè)應用、漸進(jìn)式Web應用,或者只是將其用作靜態(tài)站點(diǎn)生成器。它也是模塊化的,所以你可以只使用你的apage所需要的模塊簡(jiǎn)而言之,Nu xt 將您從構建和優(yōu)化您的apage的工作中拯救出來(lái)Nuxt. js 具有模塊化的架構,有50多個(gè)模塊可供選擇。
  特點(diǎn):
  ·熱代碼重載;
  ·服務(wù)器端渲染或單頁(yè)應用程序或靜態(tài)生成,您選擇;
  ·使用nuxt. config . js 文件可配置;
  ·每個(gè)頁(yè)面的代碼拆分;
  ·用layouts/目錄定制布局;
  ·只加載關(guān)鍵的CSS(頁(yè)面級)。
  Nuxt成為Vue開(kāi)發(fā)不可分割的一部分,有很多貢獻者和廣泛的社區。我們會(huì )選擇這個(gè)工具的貢獻,知道社區將幫助你的技能發(fā)展,并教一些新的東西。
  12Quasar
  
  Quasar是一個(gè)通用的、Vue支持的框架,允許您使用相同的代碼庫為不同平臺編寫(xiě)應用程序:SPA、PWA、SSR應用程序、混合移動(dòng)應用程序或多平臺桌面應用程序。類(lèi)星體有多達81個(gè)組件。
  有一個(gè)好的文檔和大量的組件設計的性能和響應。Quasar在默認情況下集成了最佳實(shí)踐(HTML/ CSS / JS 縮小、緩存破壞、樹(shù)搖動(dòng)、源映射、延遲加載的代碼拆分、ES6 傳輸、代碼鏈接、可訪(fǎng)問(wèn)性),因此你可以主要關(guān)注應用的功能。它還提供了一個(gè)cli工具,用于輕松構建新項目的支架。
  該框架有一個(gè)很棒的社區,支持聊天和論壇,加上明顯的貢獻指南。此外,你可以通過(guò)捐錢(qián)來(lái)支持該工具。微信搜索公眾號:前端技術(shù)編程,回復:前端 領(lǐng)取資料 。
  13BootstrapVue
  
  引導Vue是一個(gè)基于引導庫的UI工具包。它簡(jiǎn)單地用Vue代碼替換常規引導組件中的JavaScript。使用BootstrapVue,你可以使用Vue.js和世界上最流行的前端CSS庫-Bootstrapv4在Web上構建響應性強、移動(dòng)第一和ARIA可訪(fǎng)問(wèn)的項目。它還可以輕松地與Nuxt.js集成。
  文檔是廣泛的,再加上社區的支持是強大的不和諧,使它成為一個(gè)安全的選擇,有人開(kāi)始一個(gè)項目,并作出貢獻。
  14開(kāi)發(fā)人員工具
  Statusfy
  
  Statusfy 是一個(gè)完全開(kāi)源的狀態(tài)頁(yè)面系統。Statusfy 站點(diǎn)是一個(gè)Web應用程序,創(chuàng )建于Eleventy 、Vue、Nuxt. js 和TailwindCSS 之上。 查看全部

  推薦 16 個(gè)優(yōu)秀的 Vue 開(kāi)源項目
  01CMSand Generators
  頁(yè)面工具包
  
  Pagekit 是一個(gè)開(kāi)源的CMS,在Vue. js 和Symphony框架的幫助下構建。CMS是模塊化的,所以你可以逐步擴展功能。Pagekit是在MIT許可證下發(fā)布的,因此它可以自由地修改、共享和重新發(fā)布,沒(méi)有任何限制。
  該產(chǎn)品具有CMS的所有主要和高級功能:
  ·可定制的分析儀表板與網(wǎng)站性能;
  ·網(wǎng)站內容編輯頁(yè)面;
  ·內置博客;
  ·HTML和Markdown 編輯器;
  ·文件管理器;
  ·用戶(hù)角色管理。
  還有一些東西和特點(diǎn)對開(kāi)發(fā)者特別有用。該產(chǎn)品使用簡(jiǎn)單的ORM、模塊化架構和包管理構建。還有一個(gè)內置的調試工具欄,可以幫助開(kāi)發(fā)人員監視性能、路由、數據庫查詢(xún)和調試內部系統事件、擴展甚至可以添加自己的功能。另外,也可以使用CLI執行系統更新、安裝和卸載擴展和主題,以及直接從終端清除緩存。
  該產(chǎn)品有一個(gè)強大的貢獻指南,團隊歡迎人們來(lái)修復錯誤,翻譯或擴展CMS的功能。社區沒(méi)有那么大,但非常發(fā)達,熱心幫助新人。
  因此,這是一個(gè)非常強大的產(chǎn)品,具有非常全面的文檔和透明的貢獻指南。開(kāi)啟開(kāi)源世界之路的絕佳選擇。
  02Vuepress
  
  VuePress 是一個(gè)由Vue. js 作者EvanYou 創(chuàng )建的基于Vue的靜態(tài)站點(diǎn)生成器。在VuePress 幫助下,網(wǎng)站創(chuàng )建使用VueRouter 、Vue和webpack 。最初,該產(chǎn)品是作為編寫(xiě)技術(shù)文檔的工具而創(chuàng )建的,但現在它是一個(gè)小型、緊湊、功能強大的headless CMS 。在VuePress 中你用Markdown 寫(xiě)內容,然后轉換成預渲染的靜態(tài)HTML文件。
  該項目有一個(gè)組織良好的捐款指南,工作流程透明。它還有很好的問(wèn)題管理功能。社區有超過(guò)300個(gè)活躍貢獻者,他們可以支持你。這是你開(kāi)始為開(kāi)源項目做貢獻的好選擇。
  03Vue店面
  
  Vuestorefront是一款面向電子商務(wù)的PWA,可以連接到幾乎任何電子商務(wù)后端:它使用了headless 架構。這包括流行的BigCommerce 平臺、Magento、Shopware 等。VueStorefront 的一些優(yōu)勢包括移動(dòng)優(yōu)先的方法、服務(wù)器端渲染(有利于SEO)和離線(xiàn)模式。
  該產(chǎn)品擁有一個(gè)發(fā)達的社區:Slack中約有2000名開(kāi)發(fā)者和180多名活躍貢獻者。這是特別有價(jià)值的,因為團隊有一個(gè)清晰的路線(xiàn)圖,所以你作為一個(gè)貢獻者可以選擇你可以做的任務(wù)??傊?,這是一個(gè)非常有趣的,支持和需要在上面花時(shí)間的產(chǎn)品。
  04Vuegg
  
  Vuegg 允許您將組件直接拖放到可視化編輯器中,并根據你的選擇移動(dòng)它們的大小,從而構建Vue. js 項目。這個(gè)項目的目的是合并設計和原型到一個(gè)單一的過(guò)程。
  顯著(zhù)特征:
  ·通過(guò)拖放組件和移動(dòng)/調整它們的大小來(lái)模擬/還原它們;
  ·支持標準鼠標和鍵盤(pán)組合;
  ·響應式預覽(手機、平板電腦、網(wǎng)絡(luò ));
  ·一組基本的HTML5元素;
  ·材料設計組件(vue- mdc - adapter );
  ·Vuejs 源代碼生成(download . zip )。
  這個(gè)項目有一個(gè)清晰的路線(xiàn)圖,你可以直接在Github上看到。由于該項目是相當新的,仍在進(jìn)行中的工作沒(méi)有貢獻指南,但你可以自由的打開(kāi)任何問(wèn)題和公關(guān)。
  05Gridsome
  
  Gridsome 與VuePress有許多相似之處,但它采用了一種不同的非常強大的方法來(lái)處理數據源。它允許你連接并使用應用中的許多不同類(lèi)型的數據,然后將這些數據統一到一個(gè)GraphQL 層中?;旧?,Gridsome 的前端功能用Vue,數據管理用GraphQL 。
  工作方式可以概括為以下三個(gè)步驟:
  你提供Markdown 、JSON、YAML或CVS數據格式的內容,或者從WordPress或Drupal等CMS導入內容;
  內容轉化為一個(gè)GraphQL 層,提供集中的數據管理;
  然后用這些數據用Vue構建你的應用。
  在開(kāi)發(fā)方面,文檔有一個(gè)清晰的路線(xiàn)圖、一個(gè)描述良好的更改日志和一個(gè)貢獻指南。投稿是一個(gè)不錯的選擇。
  06UI組件
  Vuetify
  
  Vuetify 根據MaterialDesign 規范提供了大量精心制作的組件(80 +)。Vueti fy 結合了Vue. js 和Material的所有優(yōu)點(diǎn)。該框架是與RTL和VueCLI - 3 兼容。Vuetify 的所有組件都有很好的記錄,也有清晰的示例。它與Vue的服務(wù)器端渲染(SSR)一起工作。Vuetify 支持所有現代網(wǎng)絡(luò )瀏覽器——甚至是IE11 和Safari9 +(使用多功能填充)。它還提供了現成的項目腳手架,這樣您就可以用一個(gè)命令開(kāi)始構建您的Vue. js 應用程序。
  它提供了一組基于材料設計的組件,例如:
  ·按鈕;
  ·投入;
  ·卡片;
  ·表,
  ·清單。
  Vuetify 背后有一個(gè)充滿(mǎn)活力的社區,有超過(guò)500個(gè)貢獻者,他們創(chuàng )建了許多Vuetify 插件。它具有成為一個(gè)好的開(kāi)源的所有主要組件:廣泛的文檔、貢獻指南、問(wèn)題管理。但在我們看來(lái),這很難做出貢獻,因為社區已經(jīng)很大了。
  07Buefy
  
  Buefy基于Bulma為Vue. js 提供了輕量級的UI組件。Buefy有兩個(gè)核心原則:讓事情簡(jiǎn)單化,輕量化。這也解釋了為什么它唯一的依賴(lài)是Vue和Bulma 。雖然它只有40多個(gè)組件,但它為你提供了隨時(shí)可用的移動(dòng)優(yōu)先和響應式的UI組件。
  特點(diǎn):
  ·支持MaterialDesign 圖標和FontAwesome ;
  ·非常輕便,除了Vue& Bu lma 之外沒(méi)有內部依賴(lài);
  ·約88KB min + gzip ;
  ·語(yǔ)義代碼輸出。
  08VueMaterial
  
  VUEMaterial簡(jiǎn)單,輕巧,完全按照GoogleMaterial Design規范建造。VUE材料提供超過(guò)56個(gè)組件來(lái)構建不同類(lèi)型的布局。一個(gè)偉大的事情是材料設計框架有真正徹底的文檔。該框架非常輕量級,包含完整的組件,完全符合GoogleMaterial Design準則。這種設計適合每一個(gè)屏幕,并支持每一個(gè)現代瀏覽器。
  路線(xiàn)圖、貢獻指南、好的文檔和更新日志都在這里。對于喜歡UI項目的開(kāi)發(fā)者來(lái)說(shuō),是一個(gè)不錯的選擇。
  09應用
  Koel
  Koel是一個(gè)個(gè)人音樂(lè )流媒體服務(wù),你可以根據你的需要定制??蛻?hù)端用Vue編寫(xiě),后端用Laravel編寫(xiě)。koel以web開(kāi)發(fā)者為目標,采用了一些更現代化的web技術(shù),比如flexbox 、音頻和拖放api等等。
  這個(gè)項目在Github上相當受歡迎,有52個(gè)貢獻者。不幸的是,沒(méi)有詳細的貢獻指南,但是作者在Github上寫(xiě)道,在你提交任何東西之前,你需要打開(kāi)一個(gè)問(wèn)題。還有一個(gè)通過(guò)Opencollective 贊助該項目的選項。
  我們喜歡這個(gè)項目背后的想法,使一個(gè)流媒體服務(wù),將由社區開(kāi)發(fā)。因此,如果你熱愛(ài)音樂(lè ),想要提高自己的Vue技能,投稿會(huì )是一個(gè)不錯的選擇。
  10Eagle.js
  
  Eagle. js 是使用Vue構建的強大、靈活、獨特的幻燈片顯示系統。它允許你在演示文稿中創(chuàng )建易于重用的組件、幻燈片和樣式。它還支持動(dòng)畫(huà),主題,和互動(dòng)小部件,這是偉大的網(wǎng)頁(yè)演示。微信搜索公眾號:Java后端編程,回復:java 領(lǐng)取資料 。
  使用這個(gè)庫可以做的最重要的事情之一是將幻燈片放在單獨的文件中,然后在其他幻燈片顯示中重用它。你還可以將特定幻燈片顯示的幻燈片導入另一個(gè)幻燈片。創(chuàng )建者還提供了幾個(gè)模板,可以輕松地開(kāi)始開(kāi)發(fā)。
  這個(gè)項目有一個(gè)貢獻指南,里面有你可以提供幫助的想法。我們認為這是一個(gè)值得花時(shí)間做的好項目:它真的幫助了很多人做演示。此外,在Eagle的幫助下,開(kāi)始學(xué)習Vue很容易。
  11工具包
  Nuxt.js
  
  Nuxt是一個(gè)用于構建通用應用程序的簡(jiǎn)單而直接的框架:服務(wù)器呈現的應用、單頁(yè)應用、漸進(jìn)式Web應用,或者只是將其用作靜態(tài)站點(diǎn)生成器。它也是模塊化的,所以你可以只使用你的apage所需要的模塊簡(jiǎn)而言之,Nu xt 將您從構建和優(yōu)化您的apage的工作中拯救出來(lái)Nuxt. js 具有模塊化的架構,有50多個(gè)模塊可供選擇。
  特點(diǎn):
  ·熱代碼重載;
  ·服務(wù)器端渲染或單頁(yè)應用程序或靜態(tài)生成,您選擇;
  ·使用nuxt. config . js 文件可配置;
  ·每個(gè)頁(yè)面的代碼拆分;
  ·用layouts/目錄定制布局;
  ·只加載關(guān)鍵的CSS(頁(yè)面級)。
  Nuxt成為Vue開(kāi)發(fā)不可分割的一部分,有很多貢獻者和廣泛的社區。我們會(huì )選擇這個(gè)工具的貢獻,知道社區將幫助你的技能發(fā)展,并教一些新的東西。
  12Quasar
  
  Quasar是一個(gè)通用的、Vue支持的框架,允許您使用相同的代碼庫為不同平臺編寫(xiě)應用程序:SPA、PWA、SSR應用程序、混合移動(dòng)應用程序或多平臺桌面應用程序。類(lèi)星體有多達81個(gè)組件。
  有一個(gè)好的文檔和大量的組件設計的性能和響應。Quasar在默認情況下集成了最佳實(shí)踐(HTML/ CSS / JS 縮小、緩存破壞、樹(shù)搖動(dòng)、源映射、延遲加載的代碼拆分、ES6 傳輸、代碼鏈接、可訪(fǎng)問(wèn)性),因此你可以主要關(guān)注應用的功能。它還提供了一個(gè)cli工具,用于輕松構建新項目的支架。
  該框架有一個(gè)很棒的社區,支持聊天和論壇,加上明顯的貢獻指南。此外,你可以通過(guò)捐錢(qián)來(lái)支持該工具。微信搜索公眾號:前端技術(shù)編程,回復:前端 領(lǐng)取資料 。
  13BootstrapVue
  
  引導Vue是一個(gè)基于引導庫的UI工具包。它簡(jiǎn)單地用Vue代碼替換常規引導組件中的JavaScript。使用BootstrapVue,你可以使用Vue.js和世界上最流行的前端CSS庫-Bootstrapv4在Web上構建響應性強、移動(dòng)第一和ARIA可訪(fǎng)問(wèn)的項目。它還可以輕松地與Nuxt.js集成。
  文檔是廣泛的,再加上社區的支持是強大的不和諧,使它成為一個(gè)安全的選擇,有人開(kāi)始一個(gè)項目,并作出貢獻。
  14開(kāi)發(fā)人員工具
  Statusfy
  
  Statusfy 是一個(gè)完全開(kāi)源的狀態(tài)頁(yè)面系統。Statusfy 站點(diǎn)是一個(gè)Web應用程序,創(chuàng )建于Eleventy 、Vue、Nuxt. js 和TailwindCSS 之上。

2017年,你需要學(xué)習的JavaScript框架和主題

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 126 次瀏覽 ? 2022-05-13 07:57 ? 來(lái)自相關(guān)話(huà)題

  2017年,你需要學(xué)習的JavaScript框架和主題
  點(diǎn)擊關(guān)注▲一燈科技
  知識|經(jīng)驗|資訊|資料四大版塊
  中國專(zhuān)業(yè)的Web前端高端培訓機構
  
  原文:#.wjdqwi2hr
  
  隨著(zhù)JavaScript的普及,應運而生了一個(gè)非?;钴S的集技術(shù),框架和庫為一體的生態(tài)圈。由于這個(gè)充滿(mǎn)多樣性的和活力的生態(tài)圈,因此大家非常困惑。應該學(xué)習哪種技術(shù)?
  你應該投資哪一種技術(shù)才能獲得最大的收益?公司現在最需要招的人最需要哪一種技術(shù)堆棧?哪一個(gè)發(fā)展空間最大?
  現在最需要了解的是哪個(gè)技術(shù)?這篇文章高度概括了你所需要了解的內容,同時(shí)附上了鏈接,你可以自行了解。
  記住,當你正在實(shí)驗一些新的代碼,你可以在Codepen.io上玩玩,如果你在學(xué)習ES6,那么你可以看看如何使用Babel REPL編譯。
  這個(gè)學(xué)習的列表很長(cháng),但是你不用感到灰心。你可以做到的!如果你在研究這列表,擔憂(yōu)該如何學(xué)習這一切,如何創(chuàng )建現代APP,移步閱讀“為什么我該感謝JavaScript疲勞”。然后開(kāi)始認真學(xué)習,動(dòng)起來(lái)。
  選擇性學(xué)習的一個(gè)注意事項
  有些內容是完全可選的,也就是說(shuō),如果你對我推薦東西此感興趣,或者工作需要,但是你不能感覺(jué)是被迫學(xué)的。每一個(gè)打了星號(*)的(比如example*)就是可選的。
  沒(méi)有打*的,都是必須學(xué)的,但是并不是所有的都是一定要學(xué)透的,你需要熟悉每一樣內容。你需要了解可選的內容,但是你完全沒(méi)有必要精通所有的。
  JavaScript & DOM 基礎
  在你找到JavaScript的工作之前,你需要掌握JavaScript的基礎:
  工具React
  React是一個(gè)由Facebook創(chuàng )建的用于構建用戶(hù)接口的JavaScript庫。 這是一個(gè)基于單向數據流的概念,意味著(zhù)對于每次周期更新:
  React將輸入變成組件作為props,然后如果特定的Dom部分的數據發(fā)生了改變,那么就會(huì )只重新渲染滿(mǎn)足條件的部分。在這個(gè)階段更新的數據,直到下一次渲染階段都不能重新觸發(fā)渲染。
  事件處理階段 — DOM渲染之后,React監聽(tīng)事件, 將事件委托到DOM樹(shù)的根節點(diǎn)上的一個(gè)單獨監聽(tīng)器 (為了更好的性能)。 你可以監聽(tīng)這些事件并響應更新數據。
  數據的任何改變,步驟重新從第一步開(kāi)始。
  這和雙向綁定形成了對比,雙向綁定是DOM的改變會(huì )改變數據(比如,Angular 1 和Knockout)。使用雙向綁定,當DOM渲染的時(shí)候(在A(yíng)ngular 1中稱(chēng)之為digest cycle),DOM的改變可能會(huì )在渲染完成前重新觸發(fā)渲染階段,導致重新載入DOM和重繪——降低了性能。
  React沒(méi)有規定一個(gè)數據管理系統, 但是Flux-based方法是推薦的。 React的單向數據流方法,借鑒了函數編程和不可變的數據結構,改變了我們眼中的前端框架架構。
  想了解更多關(guān)于React和Flux架構, 請閱讀“學(xué)習編程最好的方法就是開(kāi)始編程: 從創(chuàng )建App中學(xué)習App架構”.
  Redux
  Redux給你的APP提供了事務(wù)處理的(transactional), 確定性(deterministic)狀態(tài)管理。在Redux中,我們通過(guò)迭代大量的操作對象,以減少當前應用程序狀態(tài)。想知道為什么這個(gè)很重要, 更多請看“給更好的Redux架構的10個(gè)建議.”。想要開(kāi)始使用Redux, 學(xué)習Redux的創(chuàng )建者Dan Abramov的極佳教程:
  Redux對于生產(chǎn)項目是強制學(xué)習的,即使你從未用過(guò)Redux。
  為什么?因為它給了你大量的練習,教會(huì )你純函數的價(jià)值,以及教會(huì )你新的思考reducers的方式, 這是迭代數據集和從中獲取數據的通用的函數。 reducers 如此實(shí)用,以至于A(yíng)rray.prototype.reduce都被加入了JS規范。
  Reducer不僅僅對于組數(array)是重要的,并且學(xué)習用Reducer的新方式處理問(wèn)題,本身就十分有價(jià)值。
  Angular 2*
  Angular 2是繼來(lái)自谷歌的廣受歡迎的Angular之后的框架。因為這太受歡迎了, 這會(huì )讓你的簡(jiǎn)歷看上去十分高大上——不過(guò)我建議還是先學(xué)React。
  與Angular 2相比,我更愛(ài)React,因為:
  這個(gè)更簡(jiǎn)單, 以及……
  這十分受歡迎,并且有許多相關(guān)職位 (當然 Angular 2也是的)
  因為這個(gè)原因,我推薦學(xué)習React, 但是我認為 Angular 2完全是可選的*。 如果你非常喜歡Angular 2, 那么就換過(guò)來(lái). 先學(xué)Angular 2,將React列為可選。 每一個(gè)對你的簡(jiǎn)歷來(lái)說(shuō)都是受益匪淺的。
  無(wú)論你選哪一個(gè),試著(zhù)集中精力學(xué)習至少半年到一年,之后再去學(xué)習另一個(gè)。這需要時(shí)間,你才能真正熟練掌握。
  RxJS*
  RxJS是JavaScript的一些響應式編程工具??梢援斪鱈odash中的流。響應式編程已經(jīng)正式登陸JavaScript的舞臺。ECMAScript的Observables提案是階段一的初稿, 而RxJS 5+是Observables權威標準的實(shí)現。
  盡管我非常愛(ài)RxJS, 但是如果你一次性加載所有的包你的包會(huì )膨脹地很厲害(這里有許多操作)。為了控制包的大小, 不要加載所有的內容。請使用補丁加載:
  使用補丁加載能夠將你的包對于rxjs依賴(lài)減少大約200k。這真的非常劃算。這會(huì )讓你的app變得更快。
  EDIT: 為什么你不列出 ?
  許多人問(wèn)我,為何不列出他們喜歡的框架。我評判框架的其中一個(gè)標準就是“這真的會(huì )在工作上用到?”。
  是的,有一個(gè)框架的人氣投票。但是當你決定耗費時(shí)間專(zhuān)注學(xué)習一個(gè)框架,這是否會(huì )脫穎而出是個(gè)非常重要的考慮因素。
  為了回答這個(gè)問(wèn)題,我看了一些關(guān)鍵指標。首先,谷歌趨勢(Google Trends)。如果你想要重現這個(gè)谷歌趨勢圖表,記得要選擇主題(topic),而不是關(guān)鍵字(keyword),因為這些詞會(huì )過(guò)濾掉許多錯誤信息。換句話(huà)說(shuō),這些是主題趨勢,而不是關(guān)鍵字搜索。
  
  谷歌趨勢上的JS主題
  這個(gè)告訴我們在不同項目中的相對興趣。如果人們搜索他們,那么很有可能在探索他們的選擇,或者查找幫助或文檔。這是相對使用水平的一個(gè)非常不錯的指標。
  另一個(gè)數據的有效來(lái)源是,這個(gè)集合了來(lái)自大量不同渠道的職位表數據。職位投遞熱點(diǎn)最近急速下降,但是他們依然收集足夠的數據,來(lái)做有效的相對對比,從而告訴你在生產(chǎn)項目中人們真正使用的框架。從職位中:
  
  想要重現這些發(fā)現,搜索javascript,然后工作地點(diǎn)保持空白。你就可以清晰看到:
  Angular和React占領(lǐng)絕對優(yōu)勢:沒(méi)有可以與之相提并論的。(除了 在網(wǎng)站中具有巨大份額的jQuery——不包括app——因為它用于所有的遺留系統,包括受歡迎的CMS系統,比如WordPress)。
  在這些列表中,與React相比,Angular具有絕對優(yōu)勢。那么為什么我推薦先學(xué)React? 因為:
  越來(lái)越多的人開(kāi)始學(xué)React,而不是Angular。
  在用戶(hù)體驗上,React領(lǐng)先Angular。
  換句話(huà)說(shuō),React贏(yíng)得了思維占有率和用戶(hù)滿(mǎn)意度的競爭,并且如果按照過(guò)去幾年的趨勢,只需要按照一半的程度繼續下去,React完全有可能超越Angular作為主要的前端框架。
  Angular 2也有可能扭轉戰局,,因此Angular也有可能東山再起,但是到目前為止, React確實(shí)打了一場(chǎng)漂亮的仗.
  觀(guān)察中的框架下一步
  現在你已經(jīng)研究了所有的熱點(diǎn)技術(shù)
  提升你的JavaScript游戲。如果你不是其中一員,你會(huì )錯過(guò)的。
  
  快掃描二維碼,與志佳老師來(lái)聊聊吧~~
   查看全部

  2017年,你需要學(xué)習的JavaScript框架和主題
  點(diǎn)擊關(guān)注▲一燈科技
  知識|經(jīng)驗|資訊|資料四大版塊
  中國專(zhuān)業(yè)的Web前端高端培訓機構
  
  原文:#.wjdqwi2hr
  
  隨著(zhù)JavaScript的普及,應運而生了一個(gè)非?;钴S的集技術(shù),框架和庫為一體的生態(tài)圈。由于這個(gè)充滿(mǎn)多樣性的和活力的生態(tài)圈,因此大家非常困惑。應該學(xué)習哪種技術(shù)?
  你應該投資哪一種技術(shù)才能獲得最大的收益?公司現在最需要招的人最需要哪一種技術(shù)堆棧?哪一個(gè)發(fā)展空間最大?
  現在最需要了解的是哪個(gè)技術(shù)?這篇文章高度概括了你所需要了解的內容,同時(shí)附上了鏈接,你可以自行了解。
  記住,當你正在實(shí)驗一些新的代碼,你可以在Codepen.io上玩玩,如果你在學(xué)習ES6,那么你可以看看如何使用Babel REPL編譯。
  這個(gè)學(xué)習的列表很長(cháng),但是你不用感到灰心。你可以做到的!如果你在研究這列表,擔憂(yōu)該如何學(xué)習這一切,如何創(chuàng )建現代APP,移步閱讀“為什么我該感謝JavaScript疲勞”。然后開(kāi)始認真學(xué)習,動(dòng)起來(lái)。
  選擇性學(xué)習的一個(gè)注意事項
  有些內容是完全可選的,也就是說(shuō),如果你對我推薦東西此感興趣,或者工作需要,但是你不能感覺(jué)是被迫學(xué)的。每一個(gè)打了星號(*)的(比如example*)就是可選的。
  沒(méi)有打*的,都是必須學(xué)的,但是并不是所有的都是一定要學(xué)透的,你需要熟悉每一樣內容。你需要了解可選的內容,但是你完全沒(méi)有必要精通所有的。
  JavaScript & DOM 基礎
  在你找到JavaScript的工作之前,你需要掌握JavaScript的基礎:
  工具React
  React是一個(gè)由Facebook創(chuàng )建的用于構建用戶(hù)接口的JavaScript庫。 這是一個(gè)基于單向數據流的概念,意味著(zhù)對于每次周期更新:
  React將輸入變成組件作為props,然后如果特定的Dom部分的數據發(fā)生了改變,那么就會(huì )只重新渲染滿(mǎn)足條件的部分。在這個(gè)階段更新的數據,直到下一次渲染階段都不能重新觸發(fā)渲染。
  事件處理階段 — DOM渲染之后,React監聽(tīng)事件, 將事件委托到DOM樹(shù)的根節點(diǎn)上的一個(gè)單獨監聽(tīng)器 (為了更好的性能)。 你可以監聽(tīng)這些事件并響應更新數據。
  數據的任何改變,步驟重新從第一步開(kāi)始。
  這和雙向綁定形成了對比,雙向綁定是DOM的改變會(huì )改變數據(比如,Angular 1 和Knockout)。使用雙向綁定,當DOM渲染的時(shí)候(在A(yíng)ngular 1中稱(chēng)之為digest cycle),DOM的改變可能會(huì )在渲染完成前重新觸發(fā)渲染階段,導致重新載入DOM和重繪——降低了性能。
  React沒(méi)有規定一個(gè)數據管理系統, 但是Flux-based方法是推薦的。 React的單向數據流方法,借鑒了函數編程和不可變的數據結構,改變了我們眼中的前端框架架構。
  想了解更多關(guān)于React和Flux架構, 請閱讀“學(xué)習編程最好的方法就是開(kāi)始編程: 從創(chuàng )建App中學(xué)習App架構”.
  Redux
  Redux給你的APP提供了事務(wù)處理的(transactional), 確定性(deterministic)狀態(tài)管理。在Redux中,我們通過(guò)迭代大量的操作對象,以減少當前應用程序狀態(tài)。想知道為什么這個(gè)很重要, 更多請看“給更好的Redux架構的10個(gè)建議.”。想要開(kāi)始使用Redux, 學(xué)習Redux的創(chuàng )建者Dan Abramov的極佳教程:
  Redux對于生產(chǎn)項目是強制學(xué)習的,即使你從未用過(guò)Redux。
  為什么?因為它給了你大量的練習,教會(huì )你純函數的價(jià)值,以及教會(huì )你新的思考reducers的方式, 這是迭代數據集和從中獲取數據的通用的函數。 reducers 如此實(shí)用,以至于A(yíng)rray.prototype.reduce都被加入了JS規范。
  Reducer不僅僅對于組數(array)是重要的,并且學(xué)習用Reducer的新方式處理問(wèn)題,本身就十分有價(jià)值。
  Angular 2*
  Angular 2是繼來(lái)自谷歌的廣受歡迎的Angular之后的框架。因為這太受歡迎了, 這會(huì )讓你的簡(jiǎn)歷看上去十分高大上——不過(guò)我建議還是先學(xué)React。
  與Angular 2相比,我更愛(ài)React,因為:
  這個(gè)更簡(jiǎn)單, 以及……
  這十分受歡迎,并且有許多相關(guān)職位 (當然 Angular 2也是的)
  因為這個(gè)原因,我推薦學(xué)習React, 但是我認為 Angular 2完全是可選的*。 如果你非常喜歡Angular 2, 那么就換過(guò)來(lái). 先學(xué)Angular 2,將React列為可選。 每一個(gè)對你的簡(jiǎn)歷來(lái)說(shuō)都是受益匪淺的。
  無(wú)論你選哪一個(gè),試著(zhù)集中精力學(xué)習至少半年到一年,之后再去學(xué)習另一個(gè)。這需要時(shí)間,你才能真正熟練掌握。
  RxJS*
  RxJS是JavaScript的一些響應式編程工具??梢援斪鱈odash中的流。響應式編程已經(jīng)正式登陸JavaScript的舞臺。ECMAScript的Observables提案是階段一的初稿, 而RxJS 5+是Observables權威標準的實(shí)現。
  盡管我非常愛(ài)RxJS, 但是如果你一次性加載所有的包你的包會(huì )膨脹地很厲害(這里有許多操作)。為了控制包的大小, 不要加載所有的內容。請使用補丁加載:
  使用補丁加載能夠將你的包對于rxjs依賴(lài)減少大約200k。這真的非常劃算。這會(huì )讓你的app變得更快。
  EDIT: 為什么你不列出 ?
  許多人問(wèn)我,為何不列出他們喜歡的框架。我評判框架的其中一個(gè)標準就是“這真的會(huì )在工作上用到?”。
  是的,有一個(gè)框架的人氣投票。但是當你決定耗費時(shí)間專(zhuān)注學(xué)習一個(gè)框架,這是否會(huì )脫穎而出是個(gè)非常重要的考慮因素。
  為了回答這個(gè)問(wèn)題,我看了一些關(guān)鍵指標。首先,谷歌趨勢(Google Trends)。如果你想要重現這個(gè)谷歌趨勢圖表,記得要選擇主題(topic),而不是關(guān)鍵字(keyword),因為這些詞會(huì )過(guò)濾掉許多錯誤信息。換句話(huà)說(shuō),這些是主題趨勢,而不是關(guān)鍵字搜索。
  
  谷歌趨勢上的JS主題
  這個(gè)告訴我們在不同項目中的相對興趣。如果人們搜索他們,那么很有可能在探索他們的選擇,或者查找幫助或文檔。這是相對使用水平的一個(gè)非常不錯的指標。
  另一個(gè)數據的有效來(lái)源是,這個(gè)集合了來(lái)自大量不同渠道的職位表數據。職位投遞熱點(diǎn)最近急速下降,但是他們依然收集足夠的數據,來(lái)做有效的相對對比,從而告訴你在生產(chǎn)項目中人們真正使用的框架。從職位中:
  
  想要重現這些發(fā)現,搜索javascript,然后工作地點(diǎn)保持空白。你就可以清晰看到:
  Angular和React占領(lǐng)絕對優(yōu)勢:沒(méi)有可以與之相提并論的。(除了 在網(wǎng)站中具有巨大份額的jQuery——不包括app——因為它用于所有的遺留系統,包括受歡迎的CMS系統,比如WordPress)。
  在這些列表中,與React相比,Angular具有絕對優(yōu)勢。那么為什么我推薦先學(xué)React? 因為:
  越來(lái)越多的人開(kāi)始學(xué)React,而不是Angular。
  在用戶(hù)體驗上,React領(lǐng)先Angular。
  換句話(huà)說(shuō),React贏(yíng)得了思維占有率和用戶(hù)滿(mǎn)意度的競爭,并且如果按照過(guò)去幾年的趨勢,只需要按照一半的程度繼續下去,React完全有可能超越Angular作為主要的前端框架。
  Angular 2也有可能扭轉戰局,,因此Angular也有可能東山再起,但是到目前為止, React確實(shí)打了一場(chǎng)漂亮的仗.
  觀(guān)察中的框架下一步
  現在你已經(jīng)研究了所有的熱點(diǎn)技術(shù)
  提升你的JavaScript游戲。如果你不是其中一員,你會(huì )錯過(guò)的。
  
  快掃描二維碼,與志佳老師來(lái)聊聊吧~~
  

體驗用VS Code 里 EIDE 進(jìn)行芯片開(kāi)發(fā)的快樂(lè )~ 開(kāi)源、免費、更簡(jiǎn)便、支

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 350 次瀏覽 ? 2022-05-01 16:09 ? 來(lái)自相關(guān)話(huà)題

  體驗用VS Code 里 EIDE 進(jìn)行芯片開(kāi)發(fā)的快樂(lè )~ 開(kāi)源、免費、更簡(jiǎn)便、支
  
  出品 21ic論壇yang377156216
  網(wǎng)站:
  整體概覽
  作為 ARM Cotex M 系列內核的 32 位單片機開(kāi)發(fā)者,在平時(shí)工作中經(jīng)常會(huì )因為芯片平臺的不同而去切換各種開(kāi)發(fā)環(huán)境,幸好市面上有著(zhù)各式各樣的工具能夠滿(mǎn)足開(kāi)發(fā)攻城獅們的需求,大體上這些開(kāi)發(fā)環(huán)境可以分為幾大類(lèi):較為通用的集成環(huán)境(編輯、編譯、鏈接、下載和調試等功能合為一體),比較有代表性的有 Keil MDK、IAR EWARM、SEGGER Embedded Studio 、Mbed Studio 等等;廠(chǎng)家自制的專(zhuān)用 IDE ,主流的代表作有 STM32CubeIDE 、MCUXpresso IDE 、RT-Thread Studio 、MPLAB IDE 等等;還有一種 ”混搭版“ 的風(fēng)格,開(kāi)發(fā)者可以在 Eclipse 、VS Code 、Visual Studio 等工具中搭配 ARM GCC 編譯工具鏈進(jìn)行項目軟件開(kāi)發(fā)。在眼花繚亂的工具中,根據是否免費、編輯功能體驗度是否高、上手與熟悉難度是否適宜等因素綜合考慮,今天選擇了一種開(kāi)源、免費且更加簡(jiǎn)便的 VS Code +EIDE + GCC + J-Link 方式進(jìn)行 MM32F0144C6P 芯片的軟件開(kāi)發(fā)。接下來(lái)的內容整體可分為以下幾點(diǎn):
  一、單片機軟件開(kāi)發(fā)流程和其中一些知識點(diǎn)
  一個(gè) ARM Cortex M 系列內核的 MCU 軟件開(kāi)發(fā)者需要清楚完成一個(gè)軟件項目的大致流程是需經(jīng)過(guò)以下幾步的:
  編寫(xiě)代碼。通常是 C/C++ 語(yǔ)言,但是在考究執行效率的時(shí)候就得用到 ASM 匯編,講究面向對象的結構化編程時(shí)甚至用上 Python、Lua 等其它高級語(yǔ)言。
  將各種語(yǔ)言進(jìn)行編譯和鏈接最終生成機器二進(jìn)制文件。相信絕大部分人都親身體驗過(guò)這一步,在很多集成環(huán)境中就是一鍵 Build ,然后默認生成 hex 格式燒錄文件。
  燒錄和調試。一般燒錄方式分為 ISP 、ICP 和 IAP ,根據 MCU 的不同選擇的燒錄工具也不盡相同。有些廠(chǎng)商,例如國產(chǎn)的 STC,只支持串口方式的 ISP ,且配套的在線(xiàn)仿真調試器也是基于串口形式的;而 ARM 內核的大部分 MCU 都支持 JTAG/SWD 接口形式的 ICP 方式,配套的調試工具可以是 J-Link、U-Link、CMSIS DAP-Link 和 ST-Link 等等,也幾乎都有配套的上位機給予支持。
  運行程序?;窘?jīng)過(guò)一番調試后,最終能夠得到滿(mǎn)足功能需求的代碼了,此時(shí)終于可以結案交付了,當然,后面可能還會(huì )面對大大小小的 Bug ,還得繼續 “升級打怪”。
  
  以上內容簡(jiǎn)述了整個(gè)軟件開(kāi)發(fā)的流程,其中涉及到的編譯和鏈接這個(gè)知識點(diǎn)比較重要。為了對這些名詞有更深的理解,特意查了資料。通俗講,編譯器會(huì )將 C 程序轉換成一種機器能理解的符號形式的匯編語(yǔ)言程序,包括了各種偽指令和符號表,然后匯編器將這些代碼轉換成目標文件,包括了機器語(yǔ)言指令、數據和指令正確放入內存所需要的信息,最后由系統程序(鏈接編譯器) 將各個(gè)獨立匯編的機器語(yǔ)言程序組合起來(lái)并且解釋所有未定義的標記,直到生成可執行文件。這其中也會(huì )涉及到很多文件,比如后綴名為 .c / .s / .o / .a / .lib / .elf / .axf / .bin / .hex 等等文件,有些是中間文件,另外一些是結果可執行文件。以下這幅圖用于幫助理解這個(gè)過(guò)程:
  
  既然編譯鏈接這個(gè)過(guò)程有著(zhù)舉足輕重的地位,那市面上的又有哪些主流工具可供選擇呢?據了解,目前針對于 ARM平臺的主流編譯器主要有以下一些:
  
  用到比較多的 KEIL AC5/AC6 是閉源和收費的,編譯速度在大型項目上 AC6 非常有優(yōu)勢,它們都具備多種優(yōu)化等級可調,編出來(lái)的代碼大小較小且運行更為安全,另外也都可以在 ARM 官網(wǎng)單獨下載,比較適合用于產(chǎn)品開(kāi)發(fā)中;IAR 的 ICC 編譯器也更加高性能而被廣泛使用,在很多 benchmark 跑分測試中同顆芯片的運行結果效率都更高些,且編出來(lái)的代碼大小也適中;Keil MDK、IAR 等工具都是收費的,在使用中很可能牽扯到一定的版權問(wèn)題,而 GCC(GNU Compiler Collection)作為GNU計劃的一部分,**是完全免費的,這就是最大的優(yōu)勢**,盡管使用 GCC 是需要付出一定代價(jià)的——對編譯后造成的不良后果負全責(比如編譯出來(lái)的代碼量非常大,程序跑飛從而致使板級器件燒毀,系統死機崩潰導致丟失關(guān)鍵數據之類(lèi)的情況)。
  這里特別感謝硬漢大哥和傻孩子大哥針對各家編譯器做出的實(shí)測比較和探討,可參見(jiàn):
  二、VS Code 優(yōu)勢和 EIDE 插件介紹
  這里選擇 ARM GCC 交叉編譯工具鏈作為最重要的一環(huán),除了看重它開(kāi)源、免費、資料多等優(yōu)勢以外,更重要的是可以跨平臺。除了“內核”,那再來(lái)聊聊為什么選擇 VS Code 作為外殼吧。
  考慮 Windows 環(huán)境下能夠使用 Eclipse IDE for C/C++ Developers 來(lái)搭建 ARM 開(kāi)發(fā)環(huán)境,但是整個(gè) JAVA 環(huán)境占用了太大的 PC 資源,完整地安裝下來(lái)會(huì )非常臃腫,性?xún)r(jià)比不高,所以轉而會(huì )考慮一個(gè)跨平臺且非常流行的編輯器 VS Code ,其特點(diǎn)有:
  等等……
  好的開(kāi)發(fā)環(huán)境就像一把好刀,能讓我們開(kāi)發(fā)速度達到事半功倍,主流的就是對的,下圖顯示了 VS Code 的受歡迎程度:
  
  VS Code 里面的 EIDE 插件是個(gè)什么東西?很多人可能沒(méi)有接觸過(guò),不知道它能讓 KEIL 工程導入到 VS Code 中有多方便。下面來(lái)簡(jiǎn)單介紹。
  EIDE是 keil-assistant 插件的升級版,它們同屬一個(gè)開(kāi)發(fā)團隊,這是一款適用于 8051/STM8/Cortex-M/RISC-V 的單片機開(kāi)發(fā)環(huán)境。能夠在 VS Code 上提供 8051, STM8, Cortex-M, RISC-V 項目的開(kāi)發(fā), 編譯, 燒錄功能。通俗點(diǎn)說(shuō),它就是那個(gè)披上 VS Code 外衣然后可以將 GCC 工具、各種調試工具集大成的 “后來(lái)者”,有多種實(shí)用功能,能讓開(kāi)發(fā)工作變得更加簡(jiǎn)單高效。更多相關(guān)資源可以查看官方提供的文檔:#/ 。
  三、準備資源
  硬件資源如下:
  
  軟件資源如下:
  提示:本文中的展示基于 WIN10 64 位 PC 系統,用戶(hù)需要根據自己的電腦系統下載對應版本的資源。既可通過(guò)上述超鏈接獲取,也可直接使用壓縮包內的,為更好對照文中步驟實(shí)現環(huán)境搭建,建議盡量使用附件提供的資源包。工具軟件的安裝可以根據自己的習慣自定義路徑,也可以一直 next 選擇默認模式,記得將 gcc-arm-none-eabi 工具安裝路徑加入系統環(huán)境變量中,保險起見(jiàn)其它幾個(gè)也可以一并添加。
  
  由于官方不提供 MM32F0144C6P GCC 啟動(dòng)文件對應的鏈接文件,那自己動(dòng)手制作,思路是找到 STM32F030x 相關(guān)的文件來(lái)做修改,因為它們兩者外設資源上極為相似。要注意的是,需要根據 MM32F0144C6P 實(shí)際的中斷向量表去做修改。以下為修改好的 startup_mm32f0140_gcc.s 文件:
  /**<br />??******************************************************************************<br />??* @file? ?? ?startup_mm32f0140_gcc.s<br />??* @author? ? <br />??* @brief? ???MM32F014x devices vector table for GCC toolchain.<br />??*? ?? ?? ?? ?This module performs:<br />??*? ?? ?? ?? ?? ? - Set the initial SP<br />??*? ?? ?? ?? ?? ? - Set the initial PC == Reset_Handler,<br />??*? ?? ?? ?? ?? ? - Set the vector table entries with the exceptions ISR address<br />??*? ?? ?? ?? ?? ? - Branches to main in the C library (which eventually<br />??*? ?? ?? ?? ?? ?? ?calls main()).<br />??*? ?? ?? ?? ?After Reset the Cortex-M0 processor is in Thread mode,<br />??*? ?? ?? ?? ?priority is Privileged, and the Stack is set to Main.<br />??*<br />??******************************************************************************<br />??*/<br /><br /><br />??.syntax unified<br />??.cpu cortex-m0<br />??.fpu softvfp<br />??.thumb<br /><br /><br />.global g_pfnVectors<br />.global Default_Handler<br /><br /><br />/* start address for the initialization values of the .data section.<br />defined in linker script */<br />.word _sidata<br />/* start address for the .data section. defined in linker script */<br />.word _sdata<br />/* end address for the .data section. defined in linker script */<br />.word _edata<br />/* start address for the .bss section. defined in linker script */<br />.word _sbss<br />/* end address for the .bss section. defined in linker script */<br />.word _ebss<br /><br /><br />/**<br /> * @brief??This is the code that gets called when the processor first<br /> *? ?? ?? ? starts execution following a reset event. Only the absolutely<br /> *? ?? ?? ? necessary set is performed, after which the application<br /> *? ?? ?? ? supplied main() routine is called.<br /> * @param??None<br /> * @retval : None<br />*/<br /><br /><br />??.section .text.Reset_Handler<br />??.weak Reset_Handler<br />??.type Reset_Handler, %function<br />Reset_Handler:<br />??ldr? ?r0, =_estack<br />??mov? ?sp, r0? ?? ?? ? /* set stack pointer */<br /><br /><br />/* Copy the data segment initializers from flash to SRAM */<br />??ldr r0, =_sdata<br />??ldr r1, =_edata<br />??ldr r2, =_sidata<br />??movs r3, #0<br />??b LoopCopyDataInit<br /><br /><br />CopyDataInit:<br />??ldr r4, [r2, r3]<br />??str r4, [r0, r3]<br />??adds r3, r3, #4<br /><br /><br />LoopCopyDataInit:<br />??adds r4, r0, r3<br />??cmp r4, r1<br />??bcc CopyDataInit<br />??<br />/* Zero fill the bss segment. */<br />??ldr r2, =_sbss<br />??ldr r4, =_ebss<br />??movs r3, #0<br />??b LoopFillZerobss<br /><br /><br />FillZerobss:<br />??str??r3, [r2]<br />??adds r2, r2, #4<br /><br /><br />LoopFillZerobss:<br />??cmp r2, r4<br />??bcc FillZerobss<br /><br /><br />/* Call the clock system intitialization function.*/<br />??bl??SystemInit<br />/* Call static constructors */<br />??bl __libc_init_array<br />/* Call the application's entry point.*/<br />??bl main<br /><br /><br />LoopForever:<br />? ? b LoopForever<br /><br /><br /><br /><br />.size Reset_Handler, .-Reset_Handler<br /><br /><br />/**<br /> * @brief??This is the code that gets called when the processor receives an<br /> *? ?? ?? ?unexpected interrupt.??This simply enters an infinite loop, preserving<br /> *? ?? ?? ?the system state for examination by a debugger.<br /> *<br /> * @param??None<br /> * @retval : None<br />*/<br />? ? .section .text.Default_Handler,"ax",%progbits<br />Default_Handler:<br />Infinite_Loop:<br />??b Infinite_Loop<br />??.size Default_Handler, .-Default_Handler<br />/******************************************************************************<br />** The minimal vector table for a Cortex M0.??Note that the proper constructs<br />* must be placed on this to ensure that it ends up at physical address<br />* 0x0000.0000.<br />*******************************************************************************/<br />? ?.section .isr_vector,"a",%progbits<br />??.type g_pfnVectors, %object<br />??.size g_pfnVectors, .-g_pfnVectors<br /><br /><br /><br /><br />g_pfnVectors:<br />??.word??_estack<br />??.word??Reset_Handler<br />??.word??NMI_Handler<br />??.word??HardFault_Handler<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??SVC_Handler<br />??.word??0<br />??.word??0<br />??.word??PendSV_Handler<br />??.word??SysTick_Handler<br />??.word??WWDG_IRQHandler? ?? ?? ?? ?? ?? ? /* Window WatchDog? ?? ?? ?? ???*/<br />??.word??PVD_IRQHandler? ?? ?? ?? ?? ?? ???/* PVD through EXTI Line detect */<br />??.word??MIPI_IRQHandler? ?? ?? ?? ?? ?? ? /* MIPI? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??FLASH_IRQHandler? ?? ?? ?? ?? ?? ?/* FLASH? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??RCC_IRQHandler? ?? ?? ?? ?? ?? ???/* RCC? ?? ?? ?? ?? ?? ?? ?? ???*/<br />??.word??EXTI0_1_IRQHandler? ?? ?? ?? ?? ? /* EXTI Line 0 and 1? ?? ?? ?? ?*/<br />??.word??EXTI2_3_IRQHandler? ?? ?? ?? ?? ? /* EXTI Line 2 and 3? ?? ?? ?? ?*/<br />??.word??EXTI4_15_IRQHandler? ?? ?? ?? ?? ?/* EXTI Line 4 to 15? ?? ?? ?? ?*/<br />??.word??HWDIV_IRQHandler? ?? ?? ?? ?? ?? ?/* HWDIV? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??DMA1_Channel1_IRQHandler? ?? ?? ? /* DMA1 Channel 1? ?? ?? ?? ?? ?*/<br />??.word??DMA1_Channel2_3_IRQHandler? ?? ???/* DMA1 Channel 2 and Channel 3 */<br />??.word??DMA1_Channel4_5_IRQHandler? ?? ???/* DMA1 Channel 4 and Channel 5 */<br />??.word??ADC1_COMP_IRQHandler? ?? ?? ?? ???/* ADC1 & COMP? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM1_BRK_UP_TRG_COM_IRQHandler? ? /* TIM1 Break, Update, Trigger and Commutation */<br />??.word??TIM1_CC_IRQHandler? ?? ?? ?? ?? ? /* TIM1 Capture Compare? ?? ?? ?*/<br />??.word??TIM2_IRQHandler? ?? ?? ?? ?? ?? ? /* TIM2? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??TIM3_IRQHandler? ?? ?? ?? ?? ?? ? /* TIM3? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM14_IRQHandler? ?? ?? ?? ?? ?? ?/* TIM14? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM16_IRQHandler? ?? ?? ?? ?? ?? ?/* TIM16? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM17_IRQHandler? ?? ?? ?? ?? ?? ?/* TIM17? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??I2C1_IRQHandler? ?? ?? ?? ?? ?? ? /* I2C1? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??SPI1_IRQHandler? ?? ?? ?? ?? ?? ? /* SPI1? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??SPI2_IRQHandler? ?? ?? ?? ?? ?? ? /* SPI2? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??UART1_IRQHandler? ?? ?? ?? ?? ?? ?/* UART1? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??UART2_IRQHandler? ?? ?? ?? ?? ?? ?/* UART2? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??UART3_IRQHandler? ?? ?? ?? ?? ?? ?/* UART3? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??FLEX_CAN_IRQHandler? ?? ?? ?? ?? ?/* FLEX_CAN? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br /><br /><br /><br /><br />/*******************************************************************************<br />** Provide weak aliases for each Exception handler to the Default_Handler.<br />* As they are weak aliases, any function with the same name will override<br />* this definition.<br />********************************************************************************/<br /><br /><br />??.weak? ?? ?NMI_Handler<br />??.thumb_set NMI_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?HardFault_Handler<br />??.thumb_set HardFault_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?SVC_Handler<br />??.thumb_set SVC_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?PendSV_Handler<br />??.thumb_set PendSV_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?SysTick_Handler<br />??.thumb_set SysTick_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?WWDG_IRQHandler<br />??.thumb_set WWDG_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?PVD_IRQHandler<br />??.thumb_set PVD_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?MIPI_IRQHandler<br />??.thumb_set MIPI_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?FLASH_IRQHandler<br />??.thumb_set FLASH_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?RCC_IRQHandler<br />??.thumb_set RCC_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?EXTI0_1_IRQHandler<br />??.thumb_set EXTI0_1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?EXTI2_3_IRQHandler<br />??.thumb_set EXTI2_3_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?EXTI4_15_IRQHandler<br />??.thumb_set EXTI4_15_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?HWDIV_IRQHandler<br />??.thumb_set HWDIV_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?DMA1_Channel1_IRQHandler<br />??.thumb_set DMA1_Channel1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?DMA1_Channel2_3_IRQHandler<br />??.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?DMA1_Channel4_5_IRQHandler<br />??.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?ADC1_COMP_IRQHandler<br />??.thumb_set ADC1_COMP_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM1_BRK_UP_TRG_COM_IRQHandler<br />??.thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM1_CC_IRQHandler<br />??.thumb_set TIM1_CC_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM2_IRQHandler<br />??.thumb_set TIM2_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM3_IRQHandler<br />??.thumb_set TIM3_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM14_IRQHandler<br />??.thumb_set TIM14_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM16_IRQHandler<br />??.thumb_set TIM16_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM17_IRQHandler<br />??.thumb_set TIM17_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?I2C1_IRQHandler<br />??.thumb_set I2C1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?SPI1_IRQHandler<br />??.thumb_set SPI1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?SPI2_IRQHandler<br />??.thumb_set SPI2_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?UART1_IRQHandler<br />??.thumb_set UART1_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?UART2_IRQHandler<br />??.thumb_set UART2_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?UART3_IRQHandler<br />??.thumb_set UART3_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?FLEX_CAN_IRQHandler<br />??.thumb_set FLEX_CAN_IRQHandler,Default_Handler<br />
  以下為修改好的 MM32F0144C6P_FLASH 文件:
  /*<br />*****************************************************************************<br />**<br />**??File? ?? ???: mm32_flash.ld<br />**<br />**??Abstract? ? : Linker script for MM32F0144C6P Device with<br />**? ?? ?? ?? ?? ? 64KByte FLASH, 16KByte RAM<br />**<br />**? ?? ?? ?? ?? ? Set heap size, stack size and stack location according<br />**? ?? ?? ?? ?? ? to application requirements.<br />**<br />**? ?? ?? ?? ?? ? Set memory bank area and size if external memory is used.<br />**<br />**??Target? ?? ?: MM32<br />**<br />**??Environment : VScode<br />**<br />**??Distribution: The file is distributed “as is,” without any warranty<br />**? ?? ?? ?? ?? ? of any kind.<br />*****************************************************************************<br />*/<br /><br /><br />/* Entry Point */<br />ENTRY(Reset_Handler)<br /><br /><br />/* Highest address of the user mode stack */<br />_estack = 0x20002000;? ? /* end of 16K RAM */<br /><br /><br />/* Generate a link error if heap and stack don't fit into RAM */<br />_Min_Heap_Size = 0x200;? ?? ?/* required amount of heap??*/<br />_Min_Stack_Size = 0x400; /* required amount of stack */<br /><br /><br />/* Specify the memory areas */<br />MEMORY<br />{<br />??FLASH (rx)? ?? ?: ORIGIN = 0x08000000, LENGTH = 64K<br />??RAM (xrw)? ?? ? : ORIGIN = 0x20000000, LENGTH = 8K<br />}<br /><br /><br />/* Define output sections */<br />SECTIONS<br />{<br />??/* The startup code goes first into FLASH */<br />??.isr_vector :<br />??{<br />? ? . = ALIGN(4);<br />? ? KEEP(*(.isr_vector)) /* Startup code */<br />? ? . = ALIGN(4);<br />??} >FLASH<br /><br /><br />??/* The program code and other data goes into FLASH */<br />??.text :<br />??{<br />? ? . = ALIGN(4);<br />? ? *(.text)? ?? ?? ???/* .text sections (code) */<br />? ? *(.text*)? ?? ?? ? /* .text* sections (code) */<br />? ? *(.glue_7)? ?? ?? ?/* glue arm to thumb code */<br />? ? *(.glue_7t)? ?? ???/* glue thumb to arm code */<br />? ? *(.eh_frame)<br /><br /><br />? ? KEEP (*(.init))<br />? ? KEEP (*(.fini))<br /><br /><br />? ? . = ALIGN(4);<br />? ? _etext = .;? ?? ???/* define a global symbols at end of code */<br />??} >FLASH<br /><br /><br />??/* Constant data goes into FLASH */<br />??.rodata :<br />??{<br />? ? . = ALIGN(4);<br />? ? *(.rodata)? ?? ?? ?/* .rodata sections (constants, strings, etc.) */<br />? ? *(.rodata*)? ?? ???/* .rodata* sections (constants, strings, etc.) */<br />? ? . = ALIGN(4);<br />??} >FLASH<br /><br /><br />??.ARM.extab? ?: { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH<br />??.ARM : {<br />? ? __exidx_start = .;<br />? ? *(.ARM.exidx*)<br />? ? __exidx_end = .;<br />??} >FLASH<br /><br /><br />??.preinit_array? ???:<br />??{<br />? ? PROVIDE_HIDDEN (__preinit_array_start = .);<br />? ? KEEP (*(.preinit_array*))<br />? ? PROVIDE_HIDDEN (__preinit_array_end = .);<br />??} >FLASH<br />??.init_array :<br />??{<br />? ? PROVIDE_HIDDEN (__init_array_start = .);<br />? ? KEEP (*(SORT(.init_array.*)))<br />? ? KEEP (*(.init_array*))<br />? ? PROVIDE_HIDDEN (__init_array_end = .);<br />??} >FLASH<br />??.fini_array :<br />??{<br />? ? PROVIDE_HIDDEN (__fini_array_start = .);<br />? ? KEEP (*(SORT(.fini_array.*)))<br />? ? KEEP (*(.fini_array*))<br />? ? PROVIDE_HIDDEN (__fini_array_end = .);<br />??} >FLASH<br /><br /><br />??/* used by the startup to initialize data */<br />??_sidata = LOADADDR(.data);<br /><br /><br />??/* Initialized data sections goes into RAM, load LMA copy after code */<br />??.data : <br />??{<br />? ? . = ALIGN(4);<br />? ? _sdata = .;? ?? ???/* create a global symbol at data start */<br />? ? *(.data)? ?? ?? ???/* .data sections */<br />? ? *(.data*)? ?? ?? ? /* .data* sections */<br /><br /><br />? ? . = ALIGN(4);<br />? ? _edata = .;? ?? ???/* define a global symbol at data end */<br />??} >RAM AT> FLASH<br /><br /><br />??/* Uninitialized data section */<br />??. = ALIGN(4);<br />??.bss :<br />??{<br />? ? /* This is used by the startup in order to initialize the .bss secion */<br />? ? _sbss = .;? ?? ?? ?/* define a global symbol at bss start */<br />? ? __bss_start__ = _sbss;<br />? ? *(.bss)<br />? ? *(.bss*)<br />? ? *(COMMON)<br /><br /><br />? ? . = ALIGN(4);<br />? ? _ebss = .;? ?? ?? ?/* define a global symbol at bss end */<br />? ? __bss_end__ = _ebss;<br />??} >RAM<br /><br /><br />??/* User_heap_stack section, used to check that there is enough RAM left */<br />??._user_heap_stack :<br />??{<br />? ? . = ALIGN(4);<br />? ? PROVIDE ( end = . );<br />? ? PROVIDE ( _end = . );<br />? ? . = . + _Min_Heap_Size;<br />? ? . = . + _Min_Stack_Size;<br />? ? . = ALIGN(4);<br />??} >RAM<br /><br /><br />??/* Remove information from the standard libraries */<br />??/DISCARD/ :<br />??{<br />? ? libc.a ( * )<br />? ? libm.a ( * )<br />? ? libgcc.a ( * )<br />??}<br /><br /><br />??.ARM.attributes 0 : { *(.ARM.attributes) }<br />}
  四、著(zhù)手搭建環(huán)境
  有了前面的準備就可以開(kāi)始配置整合開(kāi)發(fā)環(huán)境了。限于篇幅,這里略過(guò)在 VS Code 中下載安裝 EIDE 和 Cortex-Debug(可以讓 VS Code + EIDE 環(huán)境具備調試功能,非必須,可以使用 O-Zone 調試) 插件,可點(diǎn)擊參考超鏈接文章說(shuō)明,這里重點(diǎn)說(shuō)明一下關(guān)鍵配置。
  Cortex-Debug 插件的配置頁(yè)需要配置兩個(gè):Arm Toolchain Path 和 Jlink GDBserver Path。如果 GNU for Arm和 Jlink GDBserver Path 已經(jīng)加入到系統環(huán)境變量中,就可以不用配置了,另外如果在 EIDE 中已經(jīng)配置了 GCC 工具鏈和 J-Link 驅動(dòng)安裝路徑的話(huà),那在這也可以不再配置。而重點(diǎn)的 EIDE 插件配置信息需要根據自己安裝情況來(lái)填寫(xiě),主要包括以下幾個(gè)內容:
  以下為我的配置情況:
  
  
  
  1. 按照上述配置好后基本就可以使用 EIDE 和 Cortex-Debug 插件了
  2. 首先將準備好的 KEIL 工程導入到 EIDE 中,建立好一個(gè)位于 VS Code 中的 EIDE KEIL 工程,名為 KEILPRJ.code-workspace,該文件后面可以直接在 EIDE 中打開(kāi) 類(lèi)似 KEIL 的 .uvprojx 工程描述文件
  3. 然后在項目資源包中將原先 KEIL 的啟動(dòng)文件替換為 GCC 平臺的
  4. 添加 MM32F0140_DFP 芯片支持包并且選擇對應芯片 MM32F0144C6P
  5. Build 配置選擇 GCC ,鏈接腳本選擇準備好的 MM32F0144C6P_FLASH.ld 所在路徑
  6. 燒錄器選項選擇 Jlink,對應好芯片名稱(chēng)
  7. 項目屬性中的包含目錄將之前 KEIL 平臺相關(guān)的替換為 GCC 平臺的即可,不動(dòng)也沒(méi)關(guān)系因為就差了個(gè) .s 文件
  8. 其它按照默認配置即可,最后類(lèi)似在 KEIL 中操作一樣,一鍵編譯和燒錄
  9. 進(jìn)而轉到 Cortex-Debug 中進(jìn)行調試
  
  
  實(shí)際調試過(guò)程中,遇到 2 個(gè)問(wèn)題:
  第一個(gè)是由于意識里認為 MM32F0144C6P 芯片的 RAM 大小為 16KB ,在 .ld 鏈接文件中填寫(xiě)的也自然是 16KB,編譯燒錄后發(fā)現 LED 并未閃爍且串口無(wú)打印輸出,再使用 Cortex-Debug 調試,發(fā)現只要一運行 bl SystemInit 就會(huì )跳到 HardFault 里面去,心里面慌了,會(huì )是 .s 沒(méi)做好?再調試也未定位到問(wèn)題點(diǎn),于是轉而使用更加出色的 O-Zone 工具去調試,結合豐富的資源顯示 ,好不容易定位到一 PUSH 就會(huì )觸發(fā)錯誤,想來(lái)應該是棧大小和地址的問(wèn)題,最后查到原來(lái)使用的芯片應該是 8KB 的 RAM 才對。.s 文件并無(wú)問(wèn)題,改過(guò) .ld 文件后,解決。
  
  
  第二個(gè)是由于官方 lib samples 里面的串口重定向并未考慮到 GCC 平臺的使用,未適配好導致 printf 打印功能失效,于是使用了自定義 printf 方法改造了程序,解決。
  
  void vprint(const char *fmt, va_list argp){<br />? ? char string[200];<br />? ? if(0 < vsprintf(string,fmt,argp)) // build string<br />? ? {<br />? ?? ???for (int i = 0; i < strlen(string); i++) {<br />? ?? ?? ?? ?while ((UART1->CSR & UART_IT_TXIEN) == 0)<br />? ?? ?? ?? ?? ? ; // The loop is sent until it is finished<br />? ?? ?? ?? ?UART1->TDR = (u8)string[i];<br />? ?? ???}<br />? ? }<br />}<br /><br /><br />void my_printf(const char *fmt, ...) // custom printf() function{<br />? ? va_list argp;<br />? ? va_start(argp, fmt);<br />? ? vprint(fmt, argp);<br />? ? va_end(argp);<br />}
  操作到這里已經(jīng)可以盡情享受 VS Code 開(kāi)發(fā) MM32 MCU 的快樂(lè )了,既不用寫(xiě) makefile ,還能保持原來(lái)在 KEIL IDE 中的一些打包工程的操作習慣。另外,依托于工具強大的插件庫,我們還可以在 VS Code 中安裝配置 Astyle 格式化工具,使得代碼結構整潔美觀(guān)并且規范;還可以在 VS Code 部署好本地 Git 倉,利用 Github 進(jìn)行工程迭代管理,使得項目開(kāi)發(fā)變得井然有序;還可以使用 Settings Sync 插件進(jìn)行多臺 PC 機上的 VS Code 配置同步,再也不用擔心更換電腦后重新又得重新安裝配置之前一直使用的那么多插件了??偠灾?,VS Code 真香!
  五、編譯、燒錄及調試演示視頻
  實(shí)驗中導入的示例工程為自己移植的 nr micro shell 組件測試代碼,可以作為 Template 使用。編譯燒錄好程序后,開(kāi)發(fā)板的串口會(huì )輸出調試信息, LED 燈快速閃爍一會(huì )兒然后停止,此時(shí)可以使用 EIDE 中的串口工具終端與開(kāi)發(fā)板進(jìn)行指令交互,根據 LED 的亮滅狀態(tài)來(lái)看終端給開(kāi)發(fā)板發(fā)出的命令是否有被正確執行。
   查看全部

  體驗用VS Code 里 EIDE 進(jìn)行芯片開(kāi)發(fā)的快樂(lè )~ 開(kāi)源、免費、更簡(jiǎn)便、支
  
  出品 21ic論壇yang377156216
  網(wǎng)站:
  整體概覽
  作為 ARM Cotex M 系列內核的 32 位單片機開(kāi)發(fā)者,在平時(shí)工作中經(jīng)常會(huì )因為芯片平臺的不同而去切換各種開(kāi)發(fā)環(huán)境,幸好市面上有著(zhù)各式各樣的工具能夠滿(mǎn)足開(kāi)發(fā)攻城獅們的需求,大體上這些開(kāi)發(fā)環(huán)境可以分為幾大類(lèi):較為通用的集成環(huán)境(編輯、編譯、鏈接、下載和調試等功能合為一體),比較有代表性的有 Keil MDK、IAR EWARM、SEGGER Embedded Studio 、Mbed Studio 等等;廠(chǎng)家自制的專(zhuān)用 IDE ,主流的代表作有 STM32CubeIDE 、MCUXpresso IDE 、RT-Thread Studio 、MPLAB IDE 等等;還有一種 ”混搭版“ 的風(fēng)格,開(kāi)發(fā)者可以在 Eclipse 、VS Code 、Visual Studio 等工具中搭配 ARM GCC 編譯工具鏈進(jìn)行項目軟件開(kāi)發(fā)。在眼花繚亂的工具中,根據是否免費、編輯功能體驗度是否高、上手與熟悉難度是否適宜等因素綜合考慮,今天選擇了一種開(kāi)源、免費且更加簡(jiǎn)便的 VS Code +EIDE + GCC + J-Link 方式進(jìn)行 MM32F0144C6P 芯片的軟件開(kāi)發(fā)。接下來(lái)的內容整體可分為以下幾點(diǎn):
  一、單片機軟件開(kāi)發(fā)流程和其中一些知識點(diǎn)
  一個(gè) ARM Cortex M 系列內核的 MCU 軟件開(kāi)發(fā)者需要清楚完成一個(gè)軟件項目的大致流程是需經(jīng)過(guò)以下幾步的:
  編寫(xiě)代碼。通常是 C/C++ 語(yǔ)言,但是在考究執行效率的時(shí)候就得用到 ASM 匯編,講究面向對象的結構化編程時(shí)甚至用上 Python、Lua 等其它高級語(yǔ)言。
  將各種語(yǔ)言進(jìn)行編譯和鏈接最終生成機器二進(jìn)制文件。相信絕大部分人都親身體驗過(guò)這一步,在很多集成環(huán)境中就是一鍵 Build ,然后默認生成 hex 格式燒錄文件。
  燒錄和調試。一般燒錄方式分為 ISP 、ICP 和 IAP ,根據 MCU 的不同選擇的燒錄工具也不盡相同。有些廠(chǎng)商,例如國產(chǎn)的 STC,只支持串口方式的 ISP ,且配套的在線(xiàn)仿真調試器也是基于串口形式的;而 ARM 內核的大部分 MCU 都支持 JTAG/SWD 接口形式的 ICP 方式,配套的調試工具可以是 J-Link、U-Link、CMSIS DAP-Link 和 ST-Link 等等,也幾乎都有配套的上位機給予支持。
  運行程序?;窘?jīng)過(guò)一番調試后,最終能夠得到滿(mǎn)足功能需求的代碼了,此時(shí)終于可以結案交付了,當然,后面可能還會(huì )面對大大小小的 Bug ,還得繼續 “升級打怪”。
  
  以上內容簡(jiǎn)述了整個(gè)軟件開(kāi)發(fā)的流程,其中涉及到的編譯和鏈接這個(gè)知識點(diǎn)比較重要。為了對這些名詞有更深的理解,特意查了資料。通俗講,編譯器會(huì )將 C 程序轉換成一種機器能理解的符號形式的匯編語(yǔ)言程序,包括了各種偽指令和符號表,然后匯編器將這些代碼轉換成目標文件,包括了機器語(yǔ)言指令、數據和指令正確放入內存所需要的信息,最后由系統程序(鏈接編譯器) 將各個(gè)獨立匯編的機器語(yǔ)言程序組合起來(lái)并且解釋所有未定義的標記,直到生成可執行文件。這其中也會(huì )涉及到很多文件,比如后綴名為 .c / .s / .o / .a / .lib / .elf / .axf / .bin / .hex 等等文件,有些是中間文件,另外一些是結果可執行文件。以下這幅圖用于幫助理解這個(gè)過(guò)程:
  
  既然編譯鏈接這個(gè)過(guò)程有著(zhù)舉足輕重的地位,那市面上的又有哪些主流工具可供選擇呢?據了解,目前針對于 ARM平臺的主流編譯器主要有以下一些:
  
  用到比較多的 KEIL AC5/AC6 是閉源和收費的,編譯速度在大型項目上 AC6 非常有優(yōu)勢,它們都具備多種優(yōu)化等級可調,編出來(lái)的代碼大小較小且運行更為安全,另外也都可以在 ARM 官網(wǎng)單獨下載,比較適合用于產(chǎn)品開(kāi)發(fā)中;IAR 的 ICC 編譯器也更加高性能而被廣泛使用,在很多 benchmark 跑分測試中同顆芯片的運行結果效率都更高些,且編出來(lái)的代碼大小也適中;Keil MDK、IAR 等工具都是收費的,在使用中很可能牽扯到一定的版權問(wèn)題,而 GCC(GNU Compiler Collection)作為GNU計劃的一部分,**是完全免費的,這就是最大的優(yōu)勢**,盡管使用 GCC 是需要付出一定代價(jià)的——對編譯后造成的不良后果負全責(比如編譯出來(lái)的代碼量非常大,程序跑飛從而致使板級器件燒毀,系統死機崩潰導致丟失關(guān)鍵數據之類(lèi)的情況)。
  這里特別感謝硬漢大哥和傻孩子大哥針對各家編譯器做出的實(shí)測比較和探討,可參見(jiàn):
  二、VS Code 優(yōu)勢和 EIDE 插件介紹
  這里選擇 ARM GCC 交叉編譯工具鏈作為最重要的一環(huán),除了看重它開(kāi)源、免費、資料多等優(yōu)勢以外,更重要的是可以跨平臺。除了“內核”,那再來(lái)聊聊為什么選擇 VS Code 作為外殼吧。
  考慮 Windows 環(huán)境下能夠使用 Eclipse IDE for C/C++ Developers 來(lái)搭建 ARM 開(kāi)發(fā)環(huán)境,但是整個(gè) JAVA 環(huán)境占用了太大的 PC 資源,完整地安裝下來(lái)會(huì )非常臃腫,性?xún)r(jià)比不高,所以轉而會(huì )考慮一個(gè)跨平臺且非常流行的編輯器 VS Code ,其特點(diǎn)有:
  等等……
  好的開(kāi)發(fā)環(huán)境就像一把好刀,能讓我們開(kāi)發(fā)速度達到事半功倍,主流的就是對的,下圖顯示了 VS Code 的受歡迎程度:
  
  VS Code 里面的 EIDE 插件是個(gè)什么東西?很多人可能沒(méi)有接觸過(guò),不知道它能讓 KEIL 工程導入到 VS Code 中有多方便。下面來(lái)簡(jiǎn)單介紹。
  EIDE是 keil-assistant 插件的升級版,它們同屬一個(gè)開(kāi)發(fā)團隊,這是一款適用于 8051/STM8/Cortex-M/RISC-V 的單片機開(kāi)發(fā)環(huán)境。能夠在 VS Code 上提供 8051, STM8, Cortex-M, RISC-V 項目的開(kāi)發(fā), 編譯, 燒錄功能。通俗點(diǎn)說(shuō),它就是那個(gè)披上 VS Code 外衣然后可以將 GCC 工具、各種調試工具集大成的 “后來(lái)者”,有多種實(shí)用功能,能讓開(kāi)發(fā)工作變得更加簡(jiǎn)單高效。更多相關(guān)資源可以查看官方提供的文檔:#/ 。
  三、準備資源
  硬件資源如下:
  
  軟件資源如下:
  提示:本文中的展示基于 WIN10 64 位 PC 系統,用戶(hù)需要根據自己的電腦系統下載對應版本的資源。既可通過(guò)上述超鏈接獲取,也可直接使用壓縮包內的,為更好對照文中步驟實(shí)現環(huán)境搭建,建議盡量使用附件提供的資源包。工具軟件的安裝可以根據自己的習慣自定義路徑,也可以一直 next 選擇默認模式,記得將 gcc-arm-none-eabi 工具安裝路徑加入系統環(huán)境變量中,保險起見(jiàn)其它幾個(gè)也可以一并添加。
  
  由于官方不提供 MM32F0144C6P GCC 啟動(dòng)文件對應的鏈接文件,那自己動(dòng)手制作,思路是找到 STM32F030x 相關(guān)的文件來(lái)做修改,因為它們兩者外設資源上極為相似。要注意的是,需要根據 MM32F0144C6P 實(shí)際的中斷向量表去做修改。以下為修改好的 startup_mm32f0140_gcc.s 文件:
  /**<br />??******************************************************************************<br />??* @file? ?? ?startup_mm32f0140_gcc.s<br />??* @author? ? <br />??* @brief? ???MM32F014x devices vector table for GCC toolchain.<br />??*? ?? ?? ?? ?This module performs:<br />??*? ?? ?? ?? ?? ? - Set the initial SP<br />??*? ?? ?? ?? ?? ? - Set the initial PC == Reset_Handler,<br />??*? ?? ?? ?? ?? ? - Set the vector table entries with the exceptions ISR address<br />??*? ?? ?? ?? ?? ? - Branches to main in the C library (which eventually<br />??*? ?? ?? ?? ?? ?? ?calls main()).<br />??*? ?? ?? ?? ?After Reset the Cortex-M0 processor is in Thread mode,<br />??*? ?? ?? ?? ?priority is Privileged, and the Stack is set to Main.<br />??*<br />??******************************************************************************<br />??*/<br /><br /><br />??.syntax unified<br />??.cpu cortex-m0<br />??.fpu softvfp<br />??.thumb<br /><br /><br />.global g_pfnVectors<br />.global Default_Handler<br /><br /><br />/* start address for the initialization values of the .data section.<br />defined in linker script */<br />.word _sidata<br />/* start address for the .data section. defined in linker script */<br />.word _sdata<br />/* end address for the .data section. defined in linker script */<br />.word _edata<br />/* start address for the .bss section. defined in linker script */<br />.word _sbss<br />/* end address for the .bss section. defined in linker script */<br />.word _ebss<br /><br /><br />/**<br /> * @brief??This is the code that gets called when the processor first<br /> *? ?? ?? ? starts execution following a reset event. Only the absolutely<br /> *? ?? ?? ? necessary set is performed, after which the application<br /> *? ?? ?? ? supplied main() routine is called.<br /> * @param??None<br /> * @retval : None<br />*/<br /><br /><br />??.section .text.Reset_Handler<br />??.weak Reset_Handler<br />??.type Reset_Handler, %function<br />Reset_Handler:<br />??ldr? ?r0, =_estack<br />??mov? ?sp, r0? ?? ?? ? /* set stack pointer */<br /><br /><br />/* Copy the data segment initializers from flash to SRAM */<br />??ldr r0, =_sdata<br />??ldr r1, =_edata<br />??ldr r2, =_sidata<br />??movs r3, #0<br />??b LoopCopyDataInit<br /><br /><br />CopyDataInit:<br />??ldr r4, [r2, r3]<br />??str r4, [r0, r3]<br />??adds r3, r3, #4<br /><br /><br />LoopCopyDataInit:<br />??adds r4, r0, r3<br />??cmp r4, r1<br />??bcc CopyDataInit<br />??<br />/* Zero fill the bss segment. */<br />??ldr r2, =_sbss<br />??ldr r4, =_ebss<br />??movs r3, #0<br />??b LoopFillZerobss<br /><br /><br />FillZerobss:<br />??str??r3, [r2]<br />??adds r2, r2, #4<br /><br /><br />LoopFillZerobss:<br />??cmp r2, r4<br />??bcc FillZerobss<br /><br /><br />/* Call the clock system intitialization function.*/<br />??bl??SystemInit<br />/* Call static constructors */<br />??bl __libc_init_array<br />/* Call the application's entry point.*/<br />??bl main<br /><br /><br />LoopForever:<br />? ? b LoopForever<br /><br /><br /><br /><br />.size Reset_Handler, .-Reset_Handler<br /><br /><br />/**<br /> * @brief??This is the code that gets called when the processor receives an<br /> *? ?? ?? ?unexpected interrupt.??This simply enters an infinite loop, preserving<br /> *? ?? ?? ?the system state for examination by a debugger.<br /> *<br /> * @param??None<br /> * @retval : None<br />*/<br />? ? .section .text.Default_Handler,"ax",%progbits<br />Default_Handler:<br />Infinite_Loop:<br />??b Infinite_Loop<br />??.size Default_Handler, .-Default_Handler<br />/******************************************************************************<br />** The minimal vector table for a Cortex M0.??Note that the proper constructs<br />* must be placed on this to ensure that it ends up at physical address<br />* 0x0000.0000.<br />*******************************************************************************/<br />? ?.section .isr_vector,"a",%progbits<br />??.type g_pfnVectors, %object<br />??.size g_pfnVectors, .-g_pfnVectors<br /><br /><br /><br /><br />g_pfnVectors:<br />??.word??_estack<br />??.word??Reset_Handler<br />??.word??NMI_Handler<br />??.word??HardFault_Handler<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??0<br />??.word??SVC_Handler<br />??.word??0<br />??.word??0<br />??.word??PendSV_Handler<br />??.word??SysTick_Handler<br />??.word??WWDG_IRQHandler? ?? ?? ?? ?? ?? ? /* Window WatchDog? ?? ?? ?? ???*/<br />??.word??PVD_IRQHandler? ?? ?? ?? ?? ?? ???/* PVD through EXTI Line detect */<br />??.word??MIPI_IRQHandler? ?? ?? ?? ?? ?? ? /* MIPI? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??FLASH_IRQHandler? ?? ?? ?? ?? ?? ?/* FLASH? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??RCC_IRQHandler? ?? ?? ?? ?? ?? ???/* RCC? ?? ?? ?? ?? ?? ?? ?? ???*/<br />??.word??EXTI0_1_IRQHandler? ?? ?? ?? ?? ? /* EXTI Line 0 and 1? ?? ?? ?? ?*/<br />??.word??EXTI2_3_IRQHandler? ?? ?? ?? ?? ? /* EXTI Line 2 and 3? ?? ?? ?? ?*/<br />??.word??EXTI4_15_IRQHandler? ?? ?? ?? ?? ?/* EXTI Line 4 to 15? ?? ?? ?? ?*/<br />??.word??HWDIV_IRQHandler? ?? ?? ?? ?? ?? ?/* HWDIV? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??DMA1_Channel1_IRQHandler? ?? ?? ? /* DMA1 Channel 1? ?? ?? ?? ?? ?*/<br />??.word??DMA1_Channel2_3_IRQHandler? ?? ???/* DMA1 Channel 2 and Channel 3 */<br />??.word??DMA1_Channel4_5_IRQHandler? ?? ???/* DMA1 Channel 4 and Channel 5 */<br />??.word??ADC1_COMP_IRQHandler? ?? ?? ?? ???/* ADC1 & COMP? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM1_BRK_UP_TRG_COM_IRQHandler? ? /* TIM1 Break, Update, Trigger and Commutation */<br />??.word??TIM1_CC_IRQHandler? ?? ?? ?? ?? ? /* TIM1 Capture Compare? ?? ?? ?*/<br />??.word??TIM2_IRQHandler? ?? ?? ?? ?? ?? ? /* TIM2? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??TIM3_IRQHandler? ?? ?? ?? ?? ?? ? /* TIM3? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM14_IRQHandler? ?? ?? ?? ?? ?? ?/* TIM14? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM16_IRQHandler? ?? ?? ?? ?? ?? ?/* TIM16? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??TIM17_IRQHandler? ?? ?? ?? ?? ?? ?/* TIM17? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??I2C1_IRQHandler? ?? ?? ?? ?? ?? ? /* I2C1? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??SPI1_IRQHandler? ?? ?? ?? ?? ?? ? /* SPI1? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??SPI2_IRQHandler? ?? ?? ?? ?? ?? ? /* SPI2? ?? ?? ?? ?? ?? ?? ?? ? */<br />??.word??UART1_IRQHandler? ?? ?? ?? ?? ?? ?/* UART1? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??UART2_IRQHandler? ?? ?? ?? ?? ?? ?/* UART2? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??UART3_IRQHandler? ?? ?? ?? ?? ?? ?/* UART3? ?? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??FLEX_CAN_IRQHandler? ?? ?? ?? ?? ?/* FLEX_CAN? ?? ?? ?? ?? ?? ?? ?*/<br />??.word??0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/* Reserved? ?? ?? ?? ?? ?? ?? ?*/<br /><br /><br /><br /><br />/*******************************************************************************<br />** Provide weak aliases for each Exception handler to the Default_Handler.<br />* As they are weak aliases, any function with the same name will override<br />* this definition.<br />********************************************************************************/<br /><br /><br />??.weak? ?? ?NMI_Handler<br />??.thumb_set NMI_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?HardFault_Handler<br />??.thumb_set HardFault_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?SVC_Handler<br />??.thumb_set SVC_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?PendSV_Handler<br />??.thumb_set PendSV_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?SysTick_Handler<br />??.thumb_set SysTick_Handler,Default_Handler<br /><br /><br />??.weak? ?? ?WWDG_IRQHandler<br />??.thumb_set WWDG_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?PVD_IRQHandler<br />??.thumb_set PVD_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?MIPI_IRQHandler<br />??.thumb_set MIPI_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?FLASH_IRQHandler<br />??.thumb_set FLASH_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?RCC_IRQHandler<br />??.thumb_set RCC_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?EXTI0_1_IRQHandler<br />??.thumb_set EXTI0_1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?EXTI2_3_IRQHandler<br />??.thumb_set EXTI2_3_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?EXTI4_15_IRQHandler<br />??.thumb_set EXTI4_15_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?HWDIV_IRQHandler<br />??.thumb_set HWDIV_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?DMA1_Channel1_IRQHandler<br />??.thumb_set DMA1_Channel1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?DMA1_Channel2_3_IRQHandler<br />??.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?DMA1_Channel4_5_IRQHandler<br />??.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?ADC1_COMP_IRQHandler<br />??.thumb_set ADC1_COMP_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM1_BRK_UP_TRG_COM_IRQHandler<br />??.thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM1_CC_IRQHandler<br />??.thumb_set TIM1_CC_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM2_IRQHandler<br />??.thumb_set TIM2_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM3_IRQHandler<br />??.thumb_set TIM3_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM14_IRQHandler<br />??.thumb_set TIM14_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM16_IRQHandler<br />??.thumb_set TIM16_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?TIM17_IRQHandler<br />??.thumb_set TIM17_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?I2C1_IRQHandler<br />??.thumb_set I2C1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?SPI1_IRQHandler<br />??.thumb_set SPI1_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?SPI2_IRQHandler<br />??.thumb_set SPI2_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?UART1_IRQHandler<br />??.thumb_set UART1_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?UART2_IRQHandler<br />??.thumb_set UART2_IRQHandler,Default_Handler<br /><br /><br />??.weak? ?? ?UART3_IRQHandler<br />??.thumb_set UART3_IRQHandler,Default_Handler<br />??<br />??.weak? ?? ?FLEX_CAN_IRQHandler<br />??.thumb_set FLEX_CAN_IRQHandler,Default_Handler<br />
  以下為修改好的 MM32F0144C6P_FLASH 文件:
  /*<br />*****************************************************************************<br />**<br />**??File? ?? ???: mm32_flash.ld<br />**<br />**??Abstract? ? : Linker script for MM32F0144C6P Device with<br />**? ?? ?? ?? ?? ? 64KByte FLASH, 16KByte RAM<br />**<br />**? ?? ?? ?? ?? ? Set heap size, stack size and stack location according<br />**? ?? ?? ?? ?? ? to application requirements.<br />**<br />**? ?? ?? ?? ?? ? Set memory bank area and size if external memory is used.<br />**<br />**??Target? ?? ?: MM32<br />**<br />**??Environment : VScode<br />**<br />**??Distribution: The file is distributed “as is,” without any warranty<br />**? ?? ?? ?? ?? ? of any kind.<br />*****************************************************************************<br />*/<br /><br /><br />/* Entry Point */<br />ENTRY(Reset_Handler)<br /><br /><br />/* Highest address of the user mode stack */<br />_estack = 0x20002000;? ? /* end of 16K RAM */<br /><br /><br />/* Generate a link error if heap and stack don't fit into RAM */<br />_Min_Heap_Size = 0x200;? ?? ?/* required amount of heap??*/<br />_Min_Stack_Size = 0x400; /* required amount of stack */<br /><br /><br />/* Specify the memory areas */<br />MEMORY<br />{<br />??FLASH (rx)? ?? ?: ORIGIN = 0x08000000, LENGTH = 64K<br />??RAM (xrw)? ?? ? : ORIGIN = 0x20000000, LENGTH = 8K<br />}<br /><br /><br />/* Define output sections */<br />SECTIONS<br />{<br />??/* The startup code goes first into FLASH */<br />??.isr_vector :<br />??{<br />? ? . = ALIGN(4);<br />? ? KEEP(*(.isr_vector)) /* Startup code */<br />? ? . = ALIGN(4);<br />??} >FLASH<br /><br /><br />??/* The program code and other data goes into FLASH */<br />??.text :<br />??{<br />? ? . = ALIGN(4);<br />? ? *(.text)? ?? ?? ???/* .text sections (code) */<br />? ? *(.text*)? ?? ?? ? /* .text* sections (code) */<br />? ? *(.glue_7)? ?? ?? ?/* glue arm to thumb code */<br />? ? *(.glue_7t)? ?? ???/* glue thumb to arm code */<br />? ? *(.eh_frame)<br /><br /><br />? ? KEEP (*(.init))<br />? ? KEEP (*(.fini))<br /><br /><br />? ? . = ALIGN(4);<br />? ? _etext = .;? ?? ???/* define a global symbols at end of code */<br />??} >FLASH<br /><br /><br />??/* Constant data goes into FLASH */<br />??.rodata :<br />??{<br />? ? . = ALIGN(4);<br />? ? *(.rodata)? ?? ?? ?/* .rodata sections (constants, strings, etc.) */<br />? ? *(.rodata*)? ?? ???/* .rodata* sections (constants, strings, etc.) */<br />? ? . = ALIGN(4);<br />??} >FLASH<br /><br /><br />??.ARM.extab? ?: { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH<br />??.ARM : {<br />? ? __exidx_start = .;<br />? ? *(.ARM.exidx*)<br />? ? __exidx_end = .;<br />??} >FLASH<br /><br /><br />??.preinit_array? ???:<br />??{<br />? ? PROVIDE_HIDDEN (__preinit_array_start = .);<br />? ? KEEP (*(.preinit_array*))<br />? ? PROVIDE_HIDDEN (__preinit_array_end = .);<br />??} >FLASH<br />??.init_array :<br />??{<br />? ? PROVIDE_HIDDEN (__init_array_start = .);<br />? ? KEEP (*(SORT(.init_array.*)))<br />? ? KEEP (*(.init_array*))<br />? ? PROVIDE_HIDDEN (__init_array_end = .);<br />??} >FLASH<br />??.fini_array :<br />??{<br />? ? PROVIDE_HIDDEN (__fini_array_start = .);<br />? ? KEEP (*(SORT(.fini_array.*)))<br />? ? KEEP (*(.fini_array*))<br />? ? PROVIDE_HIDDEN (__fini_array_end = .);<br />??} >FLASH<br /><br /><br />??/* used by the startup to initialize data */<br />??_sidata = LOADADDR(.data);<br /><br /><br />??/* Initialized data sections goes into RAM, load LMA copy after code */<br />??.data : <br />??{<br />? ? . = ALIGN(4);<br />? ? _sdata = .;? ?? ???/* create a global symbol at data start */<br />? ? *(.data)? ?? ?? ???/* .data sections */<br />? ? *(.data*)? ?? ?? ? /* .data* sections */<br /><br /><br />? ? . = ALIGN(4);<br />? ? _edata = .;? ?? ???/* define a global symbol at data end */<br />??} >RAM AT> FLASH<br /><br /><br />??/* Uninitialized data section */<br />??. = ALIGN(4);<br />??.bss :<br />??{<br />? ? /* This is used by the startup in order to initialize the .bss secion */<br />? ? _sbss = .;? ?? ?? ?/* define a global symbol at bss start */<br />? ? __bss_start__ = _sbss;<br />? ? *(.bss)<br />? ? *(.bss*)<br />? ? *(COMMON)<br /><br /><br />? ? . = ALIGN(4);<br />? ? _ebss = .;? ?? ?? ?/* define a global symbol at bss end */<br />? ? __bss_end__ = _ebss;<br />??} >RAM<br /><br /><br />??/* User_heap_stack section, used to check that there is enough RAM left */<br />??._user_heap_stack :<br />??{<br />? ? . = ALIGN(4);<br />? ? PROVIDE ( end = . );<br />? ? PROVIDE ( _end = . );<br />? ? . = . + _Min_Heap_Size;<br />? ? . = . + _Min_Stack_Size;<br />? ? . = ALIGN(4);<br />??} >RAM<br /><br /><br />??/* Remove information from the standard libraries */<br />??/DISCARD/ :<br />??{<br />? ? libc.a ( * )<br />? ? libm.a ( * )<br />? ? libgcc.a ( * )<br />??}<br /><br /><br />??.ARM.attributes 0 : { *(.ARM.attributes) }<br />}
  四、著(zhù)手搭建環(huán)境
  有了前面的準備就可以開(kāi)始配置整合開(kāi)發(fā)環(huán)境了。限于篇幅,這里略過(guò)在 VS Code 中下載安裝 EIDE 和 Cortex-Debug(可以讓 VS Code + EIDE 環(huán)境具備調試功能,非必須,可以使用 O-Zone 調試) 插件,可點(diǎn)擊參考超鏈接文章說(shuō)明,這里重點(diǎn)說(shuō)明一下關(guān)鍵配置。
  Cortex-Debug 插件的配置頁(yè)需要配置兩個(gè):Arm Toolchain Path 和 Jlink GDBserver Path。如果 GNU for Arm和 Jlink GDBserver Path 已經(jīng)加入到系統環(huán)境變量中,就可以不用配置了,另外如果在 EIDE 中已經(jīng)配置了 GCC 工具鏈和 J-Link 驅動(dòng)安裝路徑的話(huà),那在這也可以不再配置。而重點(diǎn)的 EIDE 插件配置信息需要根據自己安裝情況來(lái)填寫(xiě),主要包括以下幾個(gè)內容:
  以下為我的配置情況:
  
  
  
  1. 按照上述配置好后基本就可以使用 EIDE 和 Cortex-Debug 插件了
  2. 首先將準備好的 KEIL 工程導入到 EIDE 中,建立好一個(gè)位于 VS Code 中的 EIDE KEIL 工程,名為 KEILPRJ.code-workspace,該文件后面可以直接在 EIDE 中打開(kāi) 類(lèi)似 KEIL 的 .uvprojx 工程描述文件
  3. 然后在項目資源包中將原先 KEIL 的啟動(dòng)文件替換為 GCC 平臺的
  4. 添加 MM32F0140_DFP 芯片支持包并且選擇對應芯片 MM32F0144C6P
  5. Build 配置選擇 GCC ,鏈接腳本選擇準備好的 MM32F0144C6P_FLASH.ld 所在路徑
  6. 燒錄器選項選擇 Jlink,對應好芯片名稱(chēng)
  7. 項目屬性中的包含目錄將之前 KEIL 平臺相關(guān)的替換為 GCC 平臺的即可,不動(dòng)也沒(méi)關(guān)系因為就差了個(gè) .s 文件
  8. 其它按照默認配置即可,最后類(lèi)似在 KEIL 中操作一樣,一鍵編譯和燒錄
  9. 進(jìn)而轉到 Cortex-Debug 中進(jìn)行調試
  
  
  實(shí)際調試過(guò)程中,遇到 2 個(gè)問(wèn)題:
  第一個(gè)是由于意識里認為 MM32F0144C6P 芯片的 RAM 大小為 16KB ,在 .ld 鏈接文件中填寫(xiě)的也自然是 16KB,編譯燒錄后發(fā)現 LED 并未閃爍且串口無(wú)打印輸出,再使用 Cortex-Debug 調試,發(fā)現只要一運行 bl SystemInit 就會(huì )跳到 HardFault 里面去,心里面慌了,會(huì )是 .s 沒(méi)做好?再調試也未定位到問(wèn)題點(diǎn),于是轉而使用更加出色的 O-Zone 工具去調試,結合豐富的資源顯示 ,好不容易定位到一 PUSH 就會(huì )觸發(fā)錯誤,想來(lái)應該是棧大小和地址的問(wèn)題,最后查到原來(lái)使用的芯片應該是 8KB 的 RAM 才對。.s 文件并無(wú)問(wèn)題,改過(guò) .ld 文件后,解決。
  
  
  第二個(gè)是由于官方 lib samples 里面的串口重定向并未考慮到 GCC 平臺的使用,未適配好導致 printf 打印功能失效,于是使用了自定義 printf 方法改造了程序,解決。
  
  void vprint(const char *fmt, va_list argp){<br />? ? char string[200];<br />? ? if(0 < vsprintf(string,fmt,argp)) // build string<br />? ? {<br />? ?? ???for (int i = 0; i < strlen(string); i++) {<br />? ?? ?? ?? ?while ((UART1->CSR & UART_IT_TXIEN) == 0)<br />? ?? ?? ?? ?? ? ; // The loop is sent until it is finished<br />? ?? ?? ?? ?UART1->TDR = (u8)string[i];<br />? ?? ???}<br />? ? }<br />}<br /><br /><br />void my_printf(const char *fmt, ...) // custom printf() function{<br />? ? va_list argp;<br />? ? va_start(argp, fmt);<br />? ? vprint(fmt, argp);<br />? ? va_end(argp);<br />}
  操作到這里已經(jīng)可以盡情享受 VS Code 開(kāi)發(fā) MM32 MCU 的快樂(lè )了,既不用寫(xiě) makefile ,還能保持原來(lái)在 KEIL IDE 中的一些打包工程的操作習慣。另外,依托于工具強大的插件庫,我們還可以在 VS Code 中安裝配置 Astyle 格式化工具,使得代碼結構整潔美觀(guān)并且規范;還可以在 VS Code 部署好本地 Git 倉,利用 Github 進(jìn)行工程迭代管理,使得項目開(kāi)發(fā)變得井然有序;還可以使用 Settings Sync 插件進(jìn)行多臺 PC 機上的 VS Code 配置同步,再也不用擔心更換電腦后重新又得重新安裝配置之前一直使用的那么多插件了??偠灾?,VS Code 真香!
  五、編譯、燒錄及調試演示視頻
  實(shí)驗中導入的示例工程為自己移植的 nr micro shell 組件測試代碼,可以作為 Template 使用。編譯燒錄好程序后,開(kāi)發(fā)板的串口會(huì )輸出調試信息, LED 燈快速閃爍一會(huì )兒然后停止,此時(shí)可以使用 EIDE 中的串口工具終端與開(kāi)發(fā)板進(jìn)行指令交互,根據 LED 的亮滅狀態(tài)來(lái)看終端給開(kāi)發(fā)板發(fā)出的命令是否有被正確執行。
  

10個(gè)基于java的cms網(wǎng)站內容管理系統(14款java開(kāi)源cms系統國內比較好的java建站系統)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 127 次瀏覽 ? 2022-04-20 13:15 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統(14款java開(kāi)源cms系統國內比較好的java建站系統)
  javacmsjava內容管理系統14 java開(kāi)源cms系統新聞2020-04-17 編輯:深圳網(wǎng)站建設閱讀()14 java開(kāi)源cms系統
  國內比較好的java開(kāi)源cms系統,國內比較流行的開(kāi)源javacms系統,java內容管理系統,java建站系統整理,14個(gè)常用java建站系統cms@ > java網(wǎng)站系統。
  
  java 開(kāi)源cms系統1:InfoGlueinfoglue 是一個(gè)完全用Java 開(kāi)發(fā)的先進(jìn)的、可擴展的、健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  項目主頁(yè):#infoglue#org
  java 開(kāi)源cms系統2.MagnoliaMagnolia 是一個(gè)基于Java 的開(kāi)源Web 內容管理系統(cms),建立在Java 內容知識庫標準(JSR-17 0).Magnolia支持英文、中文等14種語(yǔ)言,支持本地搜索、基于XML的導入/導出、跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的War文件就可以部署到任何J2EE容器中。版本還增加了數字媒體的在線(xiàn)編輯功能。
  項目主頁(yè):#obinary#com/en/magnolia/about.html
  java open sourcecmssystem of3.opencmsOpencms是用Java編寫(xiě)的J2EE產(chǎn)品。它與 Tomcat 捆綁在一起。但也可以使用 ATG Dynamo、weblogic 和 websphere。 Opencms 支持多種RDBMS 來(lái)存儲內容,包括oracle、sql server、Sybase 和mysql。新版本提供了新的模板引擎、JSP 支持、新的連接管理系統,并提高了穩定性。
  項目主頁(yè):#opencms#org/opencms/en/index.html
  java開(kāi)源cms系統4.JBoss Nukes 基于J2EE架構的JBoss Nukes是一個(gè)完整的內容管理系統。它收錄高級用戶(hù)組管理、安全規則等組件。直到運行時(shí)才部署這些組件。
  項目主頁(yè):#jboss#org/index.html? module=html&op=userdisplay&id=developers/projects/nukes/index
  java開(kāi)源cms5.eAdmin/OWX系統基于java/jsp SiteEditor、cms、列表生成器等開(kāi)源軟件。包括:模塊、XML 配置、Struts、自己的 API、組件、所見(jiàn)即所得、多語(yǔ)言、多用戶(hù)、基于 Web 的管理器。
  項目主頁(yè):#eadmin.ch/pages/en/home/
  java開(kāi)源cms系統6.Apache LenyaApache Lenya是一個(gè)開(kāi)源的java內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
  項目主頁(yè):#org/lenya/
  java開(kāi)源cms系統7.CofaxCofax是基于Java/XMLcms的。它是由 Kinight Ridder 開(kāi)發(fā)的,旨在促進(jìn)其新聞的管理網(wǎng)站。
  項目主頁(yè):#cofax#org/index.jsp
  java開(kāi)源cms系統8.webEditorwebEditor是專(zhuān)門(mén)論壇網(wǎng)站的管理系統。使用繭作為機制。
  項目主頁(yè):#net/
  java開(kāi)源cms9.MMBaseMMBase基于MPL的開(kāi)源cms系統,具有信息發(fā)布和維護方便的特點(diǎn),包括新聞發(fā)布、論壇、聊天室等模塊,但個(gè)人認為這個(gè)項目最大的優(yōu)勢就是文檔豐富,這在開(kāi)源項目中是很少見(jiàn)的。
  項目主頁(yè):#mmbase#org/
  java開(kāi)源cmssystem 10.Ionion是一個(gè)基于最新技術(shù)的簡(jiǎn)單但功能強大的內容管理系統。它完全符合 J2EE 標準并使用 XML 來(lái)定義內容結構。使用XSL將內容轉換成各種格式如:HTML、XML、pdf、TXT等,并使用JSTL作為模板系統。
  項目主頁(yè):#net/section/s0.html
  java開(kāi)源cms系統11.JahiaJahia最近發(fā)布了Jahia內容集成管理系統cms和它工作的門(mén)戶(hù)服務(wù)器。此版本包括功能齊全的搜索引擎、輕量級文檔管理系統(支持 WebDAV)和一些協(xié)作應用程序門(mén)戶(hù)(討論組、WebMail、待辦事項列表、時(shí)間表...)
  項目主頁(yè):#jahia#org/jahia/page84.html
  java開(kāi)源cmssystem 12.JetNukeJetNuke是一個(gè)網(wǎng)站內容管理系統(cms),基于PHPNuke,用Java開(kāi)發(fā)。
  JetNuke 可免費使用且開(kāi)源(GNU 許可)。
  JetNuke 嚴格分離邏輯、數據和樣式
  7 種預定義樣式,沒(méi)有復雜的配置文件,一個(gè) Web 管理。 JetNuke 可以很好地與 JForum 結合使用。
  JetNuke 使用 fckeditor(所見(jiàn)即所得 HTML 編輯器)編輯 HTML 內容。
  項目主頁(yè):#jetnuke#org/
  java 開(kāi)源cmssystem 13.dotcmsdotcms是一個(gè) 100% 免費的基于 J2EE/門(mén)戶(hù)的內容管理系統,具有許多吸引人的特性。其他 cms 沒(méi)有。 dotcms 中使用的開(kāi)源項目和框架包括:Apache Tomcat、Liferay Enterprise Portal、Apache Struts、Hibernate ORM、Velocity Template Language、Lucene Search Engine。 dotcms 使用 Eclipse IDE 開(kāi)發(fā),使用 Velocity + Struts 作為前端,使 dotcms 易于擴展和構建。 dotcms 的許可證:Dotmarketing 公共許可證。
  項目主頁(yè):#dotcms#org/projects/dotcms/
  java開(kāi)源cms系統14.OpenEditpenEdit包括三大模塊:Web內容管理、電子商務(wù)、博客。 Web 內容管理包括在線(xiàn)編輯、動(dòng)態(tài)布局、拼寫(xiě)檢查(英文)、用戶(hù)管理、文檔管理、版本控制和通知工具。電子商務(wù)模塊包括在線(xiàn)產(chǎn)品目錄管理、購物車(chē)、電子支付、產(chǎn)品展示和高級產(chǎn)品搜索(使用Nutch/Lucene的網(wǎng)絡(luò )爬取和搜索功能進(jìn)行高級搜索,因此不需要數據庫功能)。博客模塊包括在線(xiàn)管理、評論、注冊和RSS/Atom引擎。 OpenEdit 使用的開(kāi)源組件有:Velocity、Dom4j、Spring、Lucene。
  項目主頁(yè):#openedit#org/
  類(lèi)似的內容 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統(14款java開(kāi)源cms系統國內比較好的java建站系統)
  javacmsjava內容管理系統14 java開(kāi)源cms系統新聞2020-04-17 編輯:深圳網(wǎng)站建設閱讀()14 java開(kāi)源cms系統
  國內比較好的java開(kāi)源cms系統,國內比較流行的開(kāi)源javacms系統,java內容管理系統,java建站系統整理,14個(gè)常用java建站系統cms@ > java網(wǎng)站系統。
  
  java 開(kāi)源cms系統1:InfoGlueinfoglue 是一個(gè)完全用Java 開(kāi)發(fā)的先進(jìn)的、可擴展的、健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  項目主頁(yè):#infoglue#org
  java 開(kāi)源cms系統2.MagnoliaMagnolia 是一個(gè)基于Java 的開(kāi)源Web 內容管理系統(cms),建立在Java 內容知識庫標準(JSR-17 0).Magnolia支持英文、中文等14種語(yǔ)言,支持本地搜索、基于XML的導入/導出、跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的War文件就可以部署到任何J2EE容器中。版本還增加了數字媒體的在線(xiàn)編輯功能。
  項目主頁(yè):#obinary#com/en/magnolia/about.html
  java open sourcecmssystem of3.opencmsOpencms是用Java編寫(xiě)的J2EE產(chǎn)品。它與 Tomcat 捆綁在一起。但也可以使用 ATG Dynamo、weblogic 和 websphere。 Opencms 支持多種RDBMS 來(lái)存儲內容,包括oracle、sql server、Sybase 和mysql。新版本提供了新的模板引擎、JSP 支持、新的連接管理系統,并提高了穩定性。
  項目主頁(yè):#opencms#org/opencms/en/index.html
  java開(kāi)源cms系統4.JBoss Nukes 基于J2EE架構的JBoss Nukes是一個(gè)完整的內容管理系統。它收錄高級用戶(hù)組管理、安全規則等組件。直到運行時(shí)才部署這些組件。
  項目主頁(yè):#jboss#org/index.html? module=html&op=userdisplay&id=developers/projects/nukes/index
  java開(kāi)源cms5.eAdmin/OWX系統基于java/jsp SiteEditor、cms、列表生成器等開(kāi)源軟件。包括:模塊、XML 配置、Struts、自己的 API、組件、所見(jiàn)即所得、多語(yǔ)言、多用戶(hù)、基于 Web 的管理器。
  項目主頁(yè):#eadmin.ch/pages/en/home/
  java開(kāi)源cms系統6.Apache LenyaApache Lenya是一個(gè)開(kāi)源的java內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
  項目主頁(yè):#org/lenya/
  java開(kāi)源cms系統7.CofaxCofax是基于Java/XMLcms的。它是由 Kinight Ridder 開(kāi)發(fā)的,旨在促進(jìn)其新聞的管理網(wǎng)站。
  項目主頁(yè):#cofax#org/index.jsp
  java開(kāi)源cms系統8.webEditorwebEditor是專(zhuān)門(mén)論壇網(wǎng)站的管理系統。使用繭作為機制。
  項目主頁(yè):#net/
  java開(kāi)源cms9.MMBaseMMBase基于MPL的開(kāi)源cms系統,具有信息發(fā)布和維護方便的特點(diǎn),包括新聞發(fā)布、論壇、聊天室等模塊,但個(gè)人認為這個(gè)項目最大的優(yōu)勢就是文檔豐富,這在開(kāi)源項目中是很少見(jiàn)的。
  項目主頁(yè):#mmbase#org/
  java開(kāi)源cmssystem 10.Ionion是一個(gè)基于最新技術(shù)的簡(jiǎn)單但功能強大的內容管理系統。它完全符合 J2EE 標準并使用 XML 來(lái)定義內容結構。使用XSL將內容轉換成各種格式如:HTML、XML、pdf、TXT等,并使用JSTL作為模板系統。
  項目主頁(yè):#net/section/s0.html
  java開(kāi)源cms系統11.JahiaJahia最近發(fā)布了Jahia內容集成管理系統cms和它工作的門(mén)戶(hù)服務(wù)器。此版本包括功能齊全的搜索引擎、輕量級文檔管理系統(支持 WebDAV)和一些協(xié)作應用程序門(mén)戶(hù)(討論組、WebMail、待辦事項列表、時(shí)間表...)
  項目主頁(yè):#jahia#org/jahia/page84.html
  java開(kāi)源cmssystem 12.JetNukeJetNuke是一個(gè)網(wǎng)站內容管理系統(cms),基于PHPNuke,用Java開(kāi)發(fā)。
  JetNuke 可免費使用且開(kāi)源(GNU 許可)。
  JetNuke 嚴格分離邏輯、數據和樣式
  7 種預定義樣式,沒(méi)有復雜的配置文件,一個(gè) Web 管理。 JetNuke 可以很好地與 JForum 結合使用。
  JetNuke 使用 fckeditor(所見(jiàn)即所得 HTML 編輯器)編輯 HTML 內容。
  項目主頁(yè):#jetnuke#org/
  java 開(kāi)源cmssystem 13.dotcmsdotcms是一個(gè) 100% 免費的基于 J2EE/門(mén)戶(hù)的內容管理系統,具有許多吸引人的特性。其他 cms 沒(méi)有。 dotcms 中使用的開(kāi)源項目和框架包括:Apache Tomcat、Liferay Enterprise Portal、Apache Struts、Hibernate ORM、Velocity Template Language、Lucene Search Engine。 dotcms 使用 Eclipse IDE 開(kāi)發(fā),使用 Velocity + Struts 作為前端,使 dotcms 易于擴展和構建。 dotcms 的許可證:Dotmarketing 公共許可證。
  項目主頁(yè):#dotcms#org/projects/dotcms/
  java開(kāi)源cms系統14.OpenEditpenEdit包括三大模塊:Web內容管理、電子商務(wù)、博客。 Web 內容管理包括在線(xiàn)編輯、動(dòng)態(tài)布局、拼寫(xiě)檢查(英文)、用戶(hù)管理、文檔管理、版本控制和通知工具。電子商務(wù)模塊包括在線(xiàn)產(chǎn)品目錄管理、購物車(chē)、電子支付、產(chǎn)品展示和高級產(chǎn)品搜索(使用Nutch/Lucene的網(wǎng)絡(luò )爬取和搜索功能進(jìn)行高級搜索,因此不需要數據庫功能)。博客模塊包括在線(xiàn)管理、評論、注冊和RSS/Atom引擎。 OpenEdit 使用的開(kāi)源組件有:Velocity、Dom4j、Spring、Lucene。
  項目主頁(yè):#openedit#org/
  類(lèi)似的內容

10個(gè)基于java的cms網(wǎng)站內容管理系統(DNS原理及其解析過(guò)程精彩剖析大部分域名)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 123 次瀏覽 ? 2022-04-20 05:00 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統(DNS原理及其解析過(guò)程精彩剖析大部分域名)
  DNS原理及其解析過(guò)程
  精彩分析
  大部分網(wǎng)絡(luò )通信都是基于TCP/IP的,而TCP/IP是基于IP地址的,所以計算機在網(wǎng)絡(luò )上通信時(shí),只能識別“202.96. 13 4.133”,但不是域名。我們不記得有超過(guò)10個(gè)IP地址的網(wǎng)站,所以當我們訪(fǎng)問(wèn)網(wǎng)站時(shí),我們大多在瀏覽器地址欄看到想要的頁(yè)面,那是因為有一臺叫做“DNS服務(wù)器”的電腦會(huì )自動(dòng)將我們的域名“翻譯”成對應的IP地址,然后調出IP地址對應的網(wǎng)頁(yè)。
  什么是 DNS?
  DNS(域名系統)是“域名系統”的英文縮寫(xiě)。它是組織成域層次結構的計算機和網(wǎng)絡(luò )服務(wù)命名系統。它用于 TCP/IP 網(wǎng)絡(luò )。它提供的服務(wù)用于將主機名和域名轉換為 IP 地址的工作。 DNS就是這樣一個(gè)“翻譯器”,它的基本工作原理可以用下圖來(lái)表示。
  
  DNS 域名
  域名系統充當分層和分布式數據庫,收錄各種類(lèi)型的數據,包括主機名和域名。 DNS 數據庫中的名稱(chēng)形成稱(chēng)為域名稱(chēng)空間的層次樹(shù)結構。域名收錄一個(gè)以標簽分隔的點(diǎn),例如:.
  完全限定域名 (FQDN) 唯一標識主機在 DNS 層次結構樹(shù)中的位置,由以點(diǎn)分隔的主機名列表分隔,這些主機名由指定路徑從根目錄引用。下圖顯示了一個(gè)名為 im 的主機的 DNS 樹(shù)示例。主機的 FQDN 是。
  DNS域名空間結構,又稱(chēng)全限定域名:
  
  全球只有13個(gè)根域名服務(wù)器(沒(méi)有中國)
  DNS 域命名空間的組織方式
  下表描述了用于按功能描述命名空間中 DNS 域名的五個(gè)類(lèi)別,以及每種名稱(chēng)類(lèi)型的示例。
  
  頂級域也稱(chēng)為一級域,二級域也稱(chēng)為二級域,主機名也稱(chēng)為三級域。三級域是自己申請二級域后自己定義的
  根域名服務(wù)器只負責管理一級域名,一級域名服務(wù)器只負責管理二級域名,以此類(lèi)推
  DNS 和 Internet 域
  Internet 域名系統由名稱(chēng)注冊機構維護,并通過(guò)按組織和國家/地區分配頂級域在 Internet 上進(jìn)行管理。這些域符合國際標準 3166。下表顯示了為組織使用而保留的許多現有縮寫(xiě),以及兩個(gè)字母和三個(gè)字母的國家/地區縮寫(xiě)。一些常見(jiàn)的DNS域名如下:
  組織域
  
  國家或地區
  
  資源記錄
  DNS 數據庫中收錄的資源記錄 (RR)。每個(gè) RR 標識數據庫中的特定資源。我們在搭建DNS服務(wù)器的時(shí)候,經(jīng)常會(huì )用到SOA、NS、A等記錄,而在維護DNS服務(wù)器的時(shí)候,我們會(huì )用到MX、CNAME記錄。
  常見(jiàn)的RR如下圖所示:
  
  DNS服務(wù)工作流程
  當 DNS 客戶(hù)端需要查找程序中使用的名稱(chēng)時(shí),它會(huì )查詢(xún)本地 DNS 服務(wù)器來(lái)解析該名稱(chēng)??蛻?hù)端發(fā)送的每個(gè)查詢(xún)消息都收錄 3 條信息,用于指定服務(wù)器應回答的問(wèn)題。
  ● 指定的 DNS 域名,表示為完全限定域名 (FQDN)。
  ● 指定查詢(xún)類(lèi)型,可以按類(lèi)型指定資源記錄,也可以作為特殊類(lèi)型的查詢(xún)操作。
  ● DNS 域名的指定類(lèi)別。
  對于 DNS 服務(wù)器,應始終將其指定為 Internet 類(lèi)別。例如,指定的名稱(chēng)可以是計算機的全限定域名,例如,指定的查詢(xún)類(lèi)型用于通過(guò)該名稱(chēng)搜索地址資源記錄。
  DNS 查詢(xún)以多種不同的方式進(jìn)行解析??蛻?hù)端有時(shí)還可以使用從先前查詢(xún)中獲得的緩存信息來(lái)就地回答查詢(xún)。 DNS 服務(wù)器可以使用自己的資源記錄信息緩存來(lái)回答查詢(xún),或者可以代表請求客戶(hù)端查詢(xún)或聯(lián)系另一個(gè) DNS 服務(wù)器以完全解析名稱(chēng),然后將答案返回給客戶(hù)端。這個(gè)過(guò)程稱(chēng)為遞歸。
  或者,客戶(hù)端本身可能會(huì )嘗試聯(lián)系另一個(gè) DNS 服務(wù)器來(lái)解析名稱(chēng)。如果客戶(hù)端這樣做,它會(huì )根據服務(wù)器的回答使用單獨和附加的查詢(xún),這個(gè)過(guò)程稱(chēng)為迭代,即DNS服務(wù)器之間的交互查詢(xún)是一個(gè)迭代查詢(xún)。
  DNS查詢(xún)流程如下圖所示。
  
  1、在瀏覽器中輸入域名,操作系統會(huì )先檢查本地hosts文件是否有這個(gè)URL映射關(guān)系。如果是,會(huì )先調用IP地址映射,完成域名解析。
  2、如果hosts中沒(méi)有這個(gè)域名的映射,查找本地DNS解析器緩存,看是否有這個(gè)URL的映射關(guān)系,如果有,直接返回補全域名稱(chēng)解析。
  3、如果主機和本地DNS解析器緩存之間沒(méi)有對應的URL映射,則會(huì )先找到TCP/ip參數中設置的首選DNS服務(wù)器。這里我們稱(chēng)之為本地 DNS 服務(wù)器。本服務(wù)器接收到查詢(xún)時(shí),如果要查詢(xún)的域名收錄在本地配置區資源中,則將解析結果返回給客戶(hù)端完成域名解析,具有權威性。
  4、如果要查詢(xún)的域名不是本地DNS服務(wù)器解析的,但是服務(wù)器已經(jīng)緩存了URL映射關(guān)系,則調用IP地址映射完成域名解析,不是權威。
  5、如果本地DNS服務(wù)器的本地區域文件和緩存解析無(wú)效,則根據本地DNS服務(wù)器的設置(是否設置轉發(fā)器)進(jìn)行查詢(xún)。如果不使用轉發(fā)方式,本地DNS會(huì )向13根DNS發(fā)送請求,根DNS服務(wù)器收到請求后,判斷誰(shuí)有權管理這個(gè)域名(.com),并返回一個(gè)IP負責頂級域名服務(wù)器。本地DNS服務(wù)器收到IP信息后,會(huì )聯(lián)系負責.com域的服務(wù)器。負責.com域的服務(wù)器收到請求后,如果不能自行解析,就會(huì )找下一級的DNS服務(wù)器地址()管理.com域到本地DNS服務(wù)器。當本地DNS服務(wù)器收到這個(gè)地址后,會(huì )找到域服務(wù)器,重復以上動(dòng)作,查詢(xún)直到找到主機。
  6、如果使用轉發(fā)方式,DNS服務(wù)器會(huì )將請求轉發(fā)給上級DNS服務(wù)器進(jìn)行解析。如果上級服務(wù)器無(wú)法解析,或者找到根 DNS 或 將傳輸請求轉發(fā)給上級,循環(huán)往復。無(wú)論本地DNS服務(wù)器是使用轉發(fā)還是root提示,最終都會(huì )將結果返回給本地DNS服務(wù)器,再由DNS服務(wù)器返回給客戶(hù)端。
  從客戶(hù)端到本地DNS服務(wù)器是遞歸查詢(xún),DNS服務(wù)器之間的交互查詢(xún)是迭代查詢(xún)。
  
  附錄:
  本地DNS配置轉發(fā)和未配置轉發(fā)包分析
  新建一個(gè)DNS,這里就不介紹如何搭建了,看我上一篇博文《在Win2003中安裝bind [部署智能DNS]》
  1、DNS 服務(wù)器未設置轉發(fā)
  在192.168.145.228服務(wù)器上安裝wireshark軟件,打開(kāi),設置數據包為UDP過(guò)濾,在192.16< @8.145.12 使用nslookup命令查詢(xún)客戶(hù)端,立即可以看到本地DNS服務(wù)器直接查看全球13個(gè)根域中的一部分,然后一步步解析。直到找到對應的IP為220.181.118.87。
  本地DNS服務(wù)器拿到IP后,將IP返回給192.168.145.12客戶(hù)端完成解析。
  
  2、DNS 服務(wù)器集轉發(fā)
  
  由于第一步驗證時(shí)使用了域名,有緩存,為了不被前面的實(shí)驗干擾,我們設置為192.168. 145.12 在客戶(hù)端 nslookup 上。從圖中本地DNS將請求轉發(fā)到192.168.133.10服務(wù)器,133.10服務(wù)器將獲取到的IP返回給本地DNS,然后本地 DNS 將 IP 告訴 DNS 客戶(hù)端完成解析。
  
  本文來(lái)自《系統網(wǎng)絡(luò )運維》博客,請務(wù)必保留此出處 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統(DNS原理及其解析過(guò)程精彩剖析大部分域名)
  DNS原理及其解析過(guò)程
  精彩分析
  大部分網(wǎng)絡(luò )通信都是基于TCP/IP的,而TCP/IP是基于IP地址的,所以計算機在網(wǎng)絡(luò )上通信時(shí),只能識別“202.96. 13 4.133”,但不是域名。我們不記得有超過(guò)10個(gè)IP地址的網(wǎng)站,所以當我們訪(fǎng)問(wèn)網(wǎng)站時(shí),我們大多在瀏覽器地址欄看到想要的頁(yè)面,那是因為有一臺叫做“DNS服務(wù)器”的電腦會(huì )自動(dòng)將我們的域名“翻譯”成對應的IP地址,然后調出IP地址對應的網(wǎng)頁(yè)。
  什么是 DNS?
  DNS(域名系統)是“域名系統”的英文縮寫(xiě)。它是組織成域層次結構的計算機和網(wǎng)絡(luò )服務(wù)命名系統。它用于 TCP/IP 網(wǎng)絡(luò )。它提供的服務(wù)用于將主機名和域名轉換為 IP 地址的工作。 DNS就是這樣一個(gè)“翻譯器”,它的基本工作原理可以用下圖來(lái)表示。
  
  DNS 域名
  域名系統充當分層和分布式數據庫,收錄各種類(lèi)型的數據,包括主機名和域名。 DNS 數據庫中的名稱(chēng)形成稱(chēng)為域名稱(chēng)空間的層次樹(shù)結構。域名收錄一個(gè)以標簽分隔的點(diǎn),例如:.
  完全限定域名 (FQDN) 唯一標識主機在 DNS 層次結構樹(shù)中的位置,由以點(diǎn)分隔的主機名列表分隔,這些主機名由指定路徑從根目錄引用。下圖顯示了一個(gè)名為 im 的主機的 DNS 樹(shù)示例。主機的 FQDN 是。
  DNS域名空間結構,又稱(chēng)全限定域名:
  
  全球只有13個(gè)根域名服務(wù)器(沒(méi)有中國)
  DNS 域命名空間的組織方式
  下表描述了用于按功能描述命名空間中 DNS 域名的五個(gè)類(lèi)別,以及每種名稱(chēng)類(lèi)型的示例。
  
  頂級域也稱(chēng)為一級域,二級域也稱(chēng)為二級域,主機名也稱(chēng)為三級域。三級域是自己申請二級域后自己定義的
  根域名服務(wù)器只負責管理一級域名,一級域名服務(wù)器只負責管理二級域名,以此類(lèi)推
  DNS 和 Internet 域
  Internet 域名系統由名稱(chēng)注冊機構維護,并通過(guò)按組織和國家/地區分配頂級域在 Internet 上進(jìn)行管理。這些域符合國際標準 3166。下表顯示了為組織使用而保留的許多現有縮寫(xiě),以及兩個(gè)字母和三個(gè)字母的國家/地區縮寫(xiě)。一些常見(jiàn)的DNS域名如下:
  組織域
  
  國家或地區
  
  資源記錄
  DNS 數據庫中收錄的資源記錄 (RR)。每個(gè) RR 標識數據庫中的特定資源。我們在搭建DNS服務(wù)器的時(shí)候,經(jīng)常會(huì )用到SOA、NS、A等記錄,而在維護DNS服務(wù)器的時(shí)候,我們會(huì )用到MX、CNAME記錄。
  常見(jiàn)的RR如下圖所示:
  
  DNS服務(wù)工作流程
  當 DNS 客戶(hù)端需要查找程序中使用的名稱(chēng)時(shí),它會(huì )查詢(xún)本地 DNS 服務(wù)器來(lái)解析該名稱(chēng)??蛻?hù)端發(fā)送的每個(gè)查詢(xún)消息都收錄 3 條信息,用于指定服務(wù)器應回答的問(wèn)題。
  ● 指定的 DNS 域名,表示為完全限定域名 (FQDN)。
  ● 指定查詢(xún)類(lèi)型,可以按類(lèi)型指定資源記錄,也可以作為特殊類(lèi)型的查詢(xún)操作。
  ● DNS 域名的指定類(lèi)別。
  對于 DNS 服務(wù)器,應始終將其指定為 Internet 類(lèi)別。例如,指定的名稱(chēng)可以是計算機的全限定域名,例如,指定的查詢(xún)類(lèi)型用于通過(guò)該名稱(chēng)搜索地址資源記錄。
  DNS 查詢(xún)以多種不同的方式進(jìn)行解析??蛻?hù)端有時(shí)還可以使用從先前查詢(xún)中獲得的緩存信息來(lái)就地回答查詢(xún)。 DNS 服務(wù)器可以使用自己的資源記錄信息緩存來(lái)回答查詢(xún),或者可以代表請求客戶(hù)端查詢(xún)或聯(lián)系另一個(gè) DNS 服務(wù)器以完全解析名稱(chēng),然后將答案返回給客戶(hù)端。這個(gè)過(guò)程稱(chēng)為遞歸。
  或者,客戶(hù)端本身可能會(huì )嘗試聯(lián)系另一個(gè) DNS 服務(wù)器來(lái)解析名稱(chēng)。如果客戶(hù)端這樣做,它會(huì )根據服務(wù)器的回答使用單獨和附加的查詢(xún),這個(gè)過(guò)程稱(chēng)為迭代,即DNS服務(wù)器之間的交互查詢(xún)是一個(gè)迭代查詢(xún)。
  DNS查詢(xún)流程如下圖所示。
  
  1、在瀏覽器中輸入域名,操作系統會(huì )先檢查本地hosts文件是否有這個(gè)URL映射關(guān)系。如果是,會(huì )先調用IP地址映射,完成域名解析。
  2、如果hosts中沒(méi)有這個(gè)域名的映射,查找本地DNS解析器緩存,看是否有這個(gè)URL的映射關(guān)系,如果有,直接返回補全域名稱(chēng)解析。
  3、如果主機和本地DNS解析器緩存之間沒(méi)有對應的URL映射,則會(huì )先找到TCP/ip參數中設置的首選DNS服務(wù)器。這里我們稱(chēng)之為本地 DNS 服務(wù)器。本服務(wù)器接收到查詢(xún)時(shí),如果要查詢(xún)的域名收錄在本地配置區資源中,則將解析結果返回給客戶(hù)端完成域名解析,具有權威性。
  4、如果要查詢(xún)的域名不是本地DNS服務(wù)器解析的,但是服務(wù)器已經(jīng)緩存了URL映射關(guān)系,則調用IP地址映射完成域名解析,不是權威。
  5、如果本地DNS服務(wù)器的本地區域文件和緩存解析無(wú)效,則根據本地DNS服務(wù)器的設置(是否設置轉發(fā)器)進(jìn)行查詢(xún)。如果不使用轉發(fā)方式,本地DNS會(huì )向13根DNS發(fā)送請求,根DNS服務(wù)器收到請求后,判斷誰(shuí)有權管理這個(gè)域名(.com),并返回一個(gè)IP負責頂級域名服務(wù)器。本地DNS服務(wù)器收到IP信息后,會(huì )聯(lián)系負責.com域的服務(wù)器。負責.com域的服務(wù)器收到請求后,如果不能自行解析,就會(huì )找下一級的DNS服務(wù)器地址()管理.com域到本地DNS服務(wù)器。當本地DNS服務(wù)器收到這個(gè)地址后,會(huì )找到域服務(wù)器,重復以上動(dòng)作,查詢(xún)直到找到主機。
  6、如果使用轉發(fā)方式,DNS服務(wù)器會(huì )將請求轉發(fā)給上級DNS服務(wù)器進(jìn)行解析。如果上級服務(wù)器無(wú)法解析,或者找到根 DNS 或 將傳輸請求轉發(fā)給上級,循環(huán)往復。無(wú)論本地DNS服務(wù)器是使用轉發(fā)還是root提示,最終都會(huì )將結果返回給本地DNS服務(wù)器,再由DNS服務(wù)器返回給客戶(hù)端。
  從客戶(hù)端到本地DNS服務(wù)器是遞歸查詢(xún),DNS服務(wù)器之間的交互查詢(xún)是迭代查詢(xún)。
  
  附錄:
  本地DNS配置轉發(fā)和未配置轉發(fā)包分析
  新建一個(gè)DNS,這里就不介紹如何搭建了,看我上一篇博文《在Win2003中安裝bind [部署智能DNS]》
  1、DNS 服務(wù)器未設置轉發(fā)
  在192.168.145.228服務(wù)器上安裝wireshark軟件,打開(kāi),設置數據包為UDP過(guò)濾,在192.16< @8.145.12 使用nslookup命令查詢(xún)客戶(hù)端,立即可以看到本地DNS服務(wù)器直接查看全球13個(gè)根域中的一部分,然后一步步解析。直到找到對應的IP為220.181.118.87。
  本地DNS服務(wù)器拿到IP后,將IP返回給192.168.145.12客戶(hù)端完成解析。
  
  2、DNS 服務(wù)器集轉發(fā)
  
  由于第一步驗證時(shí)使用了域名,有緩存,為了不被前面的實(shí)驗干擾,我們設置為192.168. 145.12 在客戶(hù)端 nslookup 上。從圖中本地DNS將請求轉發(fā)到192.168.133.10服務(wù)器,133.10服務(wù)器將獲取到的IP返回給本地DNS,然后本地 DNS 將 IP 告訴 DNS 客戶(hù)端完成解析。
  
  本文來(lái)自《系統網(wǎng)絡(luò )運維》博客,請務(wù)必保留此出處

10個(gè)基于java的cms網(wǎng)站內容管理系統(銘飛MCMS(銘飛內容管理系統)的升級方案(組圖) )

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 128 次瀏覽 ? 2022-04-19 05:15 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統(銘飛MCMS(銘飛內容管理系統)的升級方案(組圖)
)
  明飛Mcms(明飛內容管理系統)是一款支持不同平臺、不同終端、支持多站點(diǎn)的內容管理系統。
  SpringMVC4+Spring4+MyBatis3+Freemarker技術(shù)架構
  基于java技術(shù)開(kāi)發(fā),繼承其強大、穩定、安全、高效、跨平臺等優(yōu)勢;
  基于標簽的網(wǎng)站,只要懂html,就可以建站;
  完全生成全站靜態(tài)頁(yè)面;
  可自定義路徑結構,全面提升頁(yè)面訪(fǎng)問(wèn)速度;
  明飛Mcms是企業(yè)成立初期很好的技術(shù)基礎框架,可以加快公司項目開(kāi)發(fā)進(jìn)度,當然也可以升級現有系統;
  個(gè)人開(kāi)發(fā)者也可以使用Mcms承接外包項目;
  JAVA初學(xué)者可以下載源碼進(jìn)行學(xué)習交流;
  開(kāi)發(fā)箱和語(yǔ)言
  特征:
  免費開(kāi)源:純Java開(kāi)發(fā),MS開(kāi)發(fā)團隊承諾永久、完整開(kāi)源Mcms內容系統;
  終端統一:明飛Mcms支持PC和MOBILE皮膚定制,使用MS Team Mobile JS插件,輕松實(shí)現手機多屏適配。想想您第一次在 PC 上發(fā)布的信息。顯示在手機上是一件多么幸福的事情,數據整合一、平臺整合一、終端整合是MS團隊一直在努力的方向;
  可擴展性:以明飛Mcms為核心,MS官網(wǎng)提供第三方插件安裝,最新插件用戶(hù)可通過(guò)更新功能獲取最新插件。同時(shí),微軟也鼓勵和支持第三方開(kāi)發(fā)者發(fā)布優(yōu)質(zhì)插件;
  更新升級:明飛Mcms提供業(yè)內最完善的升級解決方案。從此無(wú)需手動(dòng)下載復制粘貼,一切完全由MS升級插件無(wú)縫完成;
  文檔手冊:明飛不斷對外發(fā)布最新文檔,如二次開(kāi)發(fā)手冊、標簽手冊,降低用戶(hù)學(xué)習成本;
<p>站群:Mcms支持站群,只需在服務(wù)器上設置一組明飛Mcms創(chuàng )建多個(gè)網(wǎng)站,和 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統(銘飛MCMS(銘飛內容管理系統)的升級方案(組圖)
)
  明飛Mcms(明飛內容管理系統)是一款支持不同平臺、不同終端、支持多站點(diǎn)的內容管理系統。
  SpringMVC4+Spring4+MyBatis3+Freemarker技術(shù)架構
  基于java技術(shù)開(kāi)發(fā),繼承其強大、穩定、安全、高效、跨平臺等優(yōu)勢;
  基于標簽的網(wǎng)站,只要懂html,就可以建站;
  完全生成全站靜態(tài)頁(yè)面;
  可自定義路徑結構,全面提升頁(yè)面訪(fǎng)問(wèn)速度;
  明飛Mcms是企業(yè)成立初期很好的技術(shù)基礎框架,可以加快公司項目開(kāi)發(fā)進(jìn)度,當然也可以升級現有系統;
  個(gè)人開(kāi)發(fā)者也可以使用Mcms承接外包項目;
  JAVA初學(xué)者可以下載源碼進(jìn)行學(xué)習交流;
  開(kāi)發(fā)箱和語(yǔ)言
  特征:
  免費開(kāi)源:純Java開(kāi)發(fā),MS開(kāi)發(fā)團隊承諾永久、完整開(kāi)源Mcms內容系統;
  終端統一:明飛Mcms支持PC和MOBILE皮膚定制,使用MS Team Mobile JS插件,輕松實(shí)現手機多屏適配。想想您第一次在 PC 上發(fā)布的信息。顯示在手機上是一件多么幸福的事情,數據整合一、平臺整合一、終端整合是MS團隊一直在努力的方向;
  可擴展性:以明飛Mcms為核心,MS官網(wǎng)提供第三方插件安裝,最新插件用戶(hù)可通過(guò)更新功能獲取最新插件。同時(shí),微軟也鼓勵和支持第三方開(kāi)發(fā)者發(fā)布優(yōu)質(zhì)插件;
  更新升級:明飛Mcms提供業(yè)內最完善的升級解決方案。從此無(wú)需手動(dòng)下載復制粘貼,一切完全由MS升級插件無(wú)縫完成;
  文檔手冊:明飛不斷對外發(fā)布最新文檔,如二次開(kāi)發(fā)手冊、標簽手冊,降低用戶(hù)學(xué)習成本;
<p>站群:Mcms支持站群,只需在服務(wù)器上設置一組明飛Mcms創(chuàng )建多個(gè)網(wǎng)站,和

10個(gè)基于java的cms網(wǎng)站內容管理系統(10個(gè)最受歡迎的CMS系統,你知道幾個(gè)? )

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 150 次瀏覽 ? 2022-04-18 16:32 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統(10個(gè)最受歡迎的CMS系統,你知道幾個(gè)?
)
  cms是Content Management System的縮寫(xiě),意思是“內容管理系統”,有很多基于模板的優(yōu)秀設計,可以加快網(wǎng)站的開(kāi)發(fā),降低開(kāi)發(fā)成本。cms 的功能不僅限于文本處理,它還可以處理圖片、Flash 動(dòng)畫(huà)、音頻和視頻流、圖像甚至電子郵件文件。
  本文介紹了10個(gè)最流行的cms系統,它們的共同特點(diǎn)是使用Java語(yǔ)言開(kāi)發(fā)。
  1. 海象 cms
  Walrus cms 是一個(gè)易于使用且直觀(guān)的 Java 開(kāi)發(fā)的 cms 內容管理系統。Walruscms沒(méi)有提供單獨的管理界面,所有的管理操作都直接在當前頁(yè)面進(jìn)行,通過(guò)點(diǎn)擊和拖動(dòng)即可實(shí)現內容編輯。使用 Spring 框架。
  
  2. 打開(kāi)cms
  Opencms是一個(gè)專(zhuān)業(yè)級的開(kāi)源網(wǎng)站內容管理系統。Opencms有助于輕松構建和管理復雜的網(wǎng)站,無(wú)需專(zhuān)業(yè)的 HTML 知識。在使用復雜的模板引擎規劃站點(diǎn)時(shí),它提供了類(lèi)似于熟悉的辦公應用程序的所見(jiàn)即所得編輯器來(lái)幫助用戶(hù)創(chuàng )建內容。Opencms 是一個(gè)完全開(kāi)源的軟件,不需要任何許可費用。
  Opencms基于JAVA和XML語(yǔ)言技術(shù),適合完全集成到現有系統中。Opencms 可以在完全開(kāi)源的環(huán)境(例如:Linux、Apache、Tomcat、MySQL)中很好地運行。當然,它也可以在商業(yè)環(huán)境中很好地運行(例如:Windows NT、IIS、BEA Weblogic、Oracle DB)。
  
  3. 阿斯布魯
  Asbru 網(wǎng)站內容管理系統是一個(gè)功能齊全、易于使用、基于數據庫的網(wǎng)站內容管理系統(cms)。內置社區、數據庫、電子商務(wù)和統計模塊。支持多種操作系統和大部分數據庫系統;支持.NET、PHP、Java等開(kāi)發(fā)語(yǔ)言。
  
  4. 脈沖
  Pulse 是一個(gè)用 Java 開(kāi)發(fā)的 Web 應用程序框架和一個(gè)門(mén)戶(hù)解決方案,它提供了易于使用和可擴展的基于瀏覽器的應用程序的創(chuàng )建,例如 網(wǎng)站、門(mén)戶(hù)網(wǎng)站等。提供了一些常用的組件,如cms模塊、購物車(chē)和用戶(hù)管理模塊。
  
  5. 木蘭
  Magnolia 是一個(gè)基于 Java 的開(kāi)源 Web 內容管理系統(cms),建立在 Java 內容知識庫標準(JSR-170) 之上。Magnolia 支持 14 種語(yǔ)言,包括英文、中文、支持本地搜索,基于XML的導入/導出,跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的War文件可以部署到任何J2EE容器中,最新版本還增加了數字媒體的在線(xiàn)編輯。
  在線(xiàn)演示:
  
  6. 網(wǎng)格cms
  Meshcms是一個(gè)用java編寫(xiě)的在線(xiàn)編輯系統,具有cms中收錄的一系列特性。但它以一種非常傳統的方式實(shí)現:如果頁(yè)面是 html 文檔,Meshcms 被認為是一種快速編輯網(wǎng)頁(yè)、管理文件和創(chuàng )建一些常用組件如:菜單、子菜單表單的方法, mail 表格、相冊等的在線(xiàn)工具。
  7. 信息膠
  infoglue 是一個(gè)完全用 Java 開(kāi)發(fā)的高級、可擴展和健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  
  8. JadaSite
  用Java開(kāi)發(fā)的一個(gè)開(kāi)源且易于使用的內容管理系統和電子商務(wù)系統
  
  9. 艾尼克 cms
  Enonic cms 是一個(gè)完整的軟件平臺,包括門(mén)戶(hù)網(wǎng)站,通過(guò)各種數字渠道和內容管理系統呈現專(zhuān)門(mén)為大中型組織定義的網(wǎng)絡(luò )策略。
  
  10. 阿帕奇萊尼亞
  Apache Lenya 是一個(gè)開(kāi)源的 Java 內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
   查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統(10個(gè)最受歡迎的CMS系統,你知道幾個(gè)?
)
  cms是Content Management System的縮寫(xiě),意思是“內容管理系統”,有很多基于模板的優(yōu)秀設計,可以加快網(wǎng)站的開(kāi)發(fā),降低開(kāi)發(fā)成本。cms 的功能不僅限于文本處理,它還可以處理圖片、Flash 動(dòng)畫(huà)、音頻和視頻流、圖像甚至電子郵件文件。
  本文介紹了10個(gè)最流行的cms系統,它們的共同特點(diǎn)是使用Java語(yǔ)言開(kāi)發(fā)。
  1. 海象 cms
  Walrus cms 是一個(gè)易于使用且直觀(guān)的 Java 開(kāi)發(fā)的 cms 內容管理系統。Walruscms沒(méi)有提供單獨的管理界面,所有的管理操作都直接在當前頁(yè)面進(jìn)行,通過(guò)點(diǎn)擊和拖動(dòng)即可實(shí)現內容編輯。使用 Spring 框架。
  
  2. 打開(kāi)cms
  Opencms是一個(gè)專(zhuān)業(yè)級的開(kāi)源網(wǎng)站內容管理系統。Opencms有助于輕松構建和管理復雜的網(wǎng)站,無(wú)需專(zhuān)業(yè)的 HTML 知識。在使用復雜的模板引擎規劃站點(diǎn)時(shí),它提供了類(lèi)似于熟悉的辦公應用程序的所見(jiàn)即所得編輯器來(lái)幫助用戶(hù)創(chuàng )建內容。Opencms 是一個(gè)完全開(kāi)源的軟件,不需要任何許可費用。
  Opencms基于JAVA和XML語(yǔ)言技術(shù),適合完全集成到現有系統中。Opencms 可以在完全開(kāi)源的環(huán)境(例如:Linux、Apache、Tomcat、MySQL)中很好地運行。當然,它也可以在商業(yè)環(huán)境中很好地運行(例如:Windows NT、IIS、BEA Weblogic、Oracle DB)。
  
  3. 阿斯布魯
  Asbru 網(wǎng)站內容管理系統是一個(gè)功能齊全、易于使用、基于數據庫的網(wǎng)站內容管理系統(cms)。內置社區、數據庫、電子商務(wù)和統計模塊。支持多種操作系統和大部分數據庫系統;支持.NET、PHP、Java等開(kāi)發(fā)語(yǔ)言。
  
  4. 脈沖
  Pulse 是一個(gè)用 Java 開(kāi)發(fā)的 Web 應用程序框架和一個(gè)門(mén)戶(hù)解決方案,它提供了易于使用和可擴展的基于瀏覽器的應用程序的創(chuàng )建,例如 網(wǎng)站、門(mén)戶(hù)網(wǎng)站等。提供了一些常用的組件,如cms模塊、購物車(chē)和用戶(hù)管理模塊。
  
  5. 木蘭
  Magnolia 是一個(gè)基于 Java 的開(kāi)源 Web 內容管理系統(cms),建立在 Java 內容知識庫標準(JSR-170) 之上。Magnolia 支持 14 種語(yǔ)言,包括英文、中文、支持本地搜索,基于XML的導入/導出,跨瀏覽器文本編輯器,一個(gè)簡(jiǎn)單的War文件可以部署到任何J2EE容器中,最新版本還增加了數字媒體的在線(xiàn)編輯。
  在線(xiàn)演示:
  
  6. 網(wǎng)格cms
  Meshcms是一個(gè)用java編寫(xiě)的在線(xiàn)編輯系統,具有cms中收錄的一系列特性。但它以一種非常傳統的方式實(shí)現:如果頁(yè)面是 html 文檔,Meshcms 被認為是一種快速編輯網(wǎng)頁(yè)、管理文件和創(chuàng )建一些常用組件如:菜單、子菜單表單的方法, mail 表格、相冊等的在線(xiàn)工具。
  7. 信息膠
  infoglue 是一個(gè)完全用 Java 開(kāi)發(fā)的高級、可擴展和健壯的內容管理系統。重要功能包括對多種語(yǔ)言的全面支持、站點(diǎn)之間的良好重用以及廣泛的集成功能。
  
  8. JadaSite
  用Java開(kāi)發(fā)的一個(gè)開(kāi)源且易于使用的內容管理系統和電子商務(wù)系統
  
  9. 艾尼克 cms
  Enonic cms 是一個(gè)完整的軟件平臺,包括門(mén)戶(hù)網(wǎng)站,通過(guò)各種數字渠道和內容管理系統呈現專(zhuān)門(mén)為大中型組織定義的網(wǎng)絡(luò )策略。
  
  10. 阿帕奇萊尼亞
  Apache Lenya 是一個(gè)開(kāi)源的 Java 內容管理系統。它基于 XML 和 XSLT 等標準技術(shù)。其代碼核心來(lái)自另一個(gè)開(kāi)源項目Cocoon
  

10個(gè)基于java的cms網(wǎng)站內容管理系統(一個(gè)基于Java的CMS系統就是合適的網(wǎng)站CMS)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 116 次瀏覽 ? 2022-04-17 13:29 ? 來(lái)自相關(guān)話(huà)題

  10個(gè)基于java的cms網(wǎng)站內容管理系統(一個(gè)基于Java的CMS系統就是合適的網(wǎng)站CMS)
  cms概述
  對于網(wǎng)站cms 系統,基于PHP 的系統是主流。例如,Drupal/Joomla 是各種主流虛擬機提供商的標準配置,被廣泛使用。
  但如果您有一個(gè) Java 團隊,或者項目目標是構建一個(gè)供企業(yè) Web 使用的內容管理系統,那么基于 Java 的 cms系統是合適的。
  基于PHP的cms系統和Javacms,有一個(gè)顯著(zhù)的區別,
  基于Java的cms通常在JCR規范上構建內容,如Jackrabbit、ModeShape等
  而 PHP 的 cms 是直接基于 RDBMS 規范構建的,主要基于 MySQL。一般來(lái)說(shuō),Java 在內容管理方面更加面向對象。
  1.海象
  一個(gè)基于Spring框架的cms,無(wú)需單獨后臺,管理員登錄后直接編輯首頁(yè),所見(jiàn)即所得,還有與Jetty捆綁的發(fā)布包。
  2.木蘭
  比較成熟的cms系統,文檔比較詳細,發(fā)布包捆綁Tomcat,響應式設計,支持PC端和移動(dòng)端,內容架構在Jackrabbit上。
  安裝包分為公共實(shí)例和創(chuàng )作實(shí)例,即網(wǎng)站前后端內容管理。一個(gè)創(chuàng )作實(shí)例可以支持多個(gè)公共實(shí)例。
  提供多種頁(yè)面模板,分級內容管理,強大的可視化編輯功能,完整的訪(fǎng)問(wèn)控制(ACL)實(shí)現。
  Magnolia 在網(wǎng)站內容管理功能方面很棒,但架構有點(diǎn)過(guò)時(shí)。
  后臺頁(yè)面編輯界面:
  
  背景文章編輯界面:
  
  3.賈希亞
  功能齊全,支持PC端、移動(dòng)端等多種顯示渠道,響應式設計,這里和Drupal做個(gè)對比文章
  ~mrudula/Talloju_690.pdf
  但是,訪(fǎng)問(wèn)在線(xiàn)文檔很慢(訪(fǎng)問(wèn)時(shí)間2013.07.01)
  4.河馬
  提供網(wǎng)站前端在線(xiàn)demo,后端管理demo需要郵箱注冊,麻煩,企業(yè)級應用質(zhì)量開(kāi)源項目,同時(shí)支持PC端和移動(dòng)端。
  通過(guò)將表示層與內容和內容上下文分離的架構設計,實(shí)現了多渠道的內容發(fā)布。
  5. 點(diǎn)cms
  提供完整的前后端在線(xiàn)演示,基于SSH架構,強大靈活的后臺管理功能
  結論
  如果你更喜歡 Spring 的框架,那么 dotcms/WALRUS 是首選,如果你考慮到功能性、可用性和易于安裝,那么 Magnolia 是首選。
  通過(guò) iefreer 查看全部

  10個(gè)基于java的cms網(wǎng)站內容管理系統(一個(gè)基于Java的CMS系統就是合適的網(wǎng)站CMS)
  cms概述
  對于網(wǎng)站cms 系統,基于PHP 的系統是主流。例如,Drupal/Joomla 是各種主流虛擬機提供商的標準配置,被廣泛使用。
  但如果您有一個(gè) Java 團隊,或者項目目標是構建一個(gè)供企業(yè) Web 使用的內容管理系統,那么基于 Java 的 cms系統是合適的。
  基于PHP的cms系統和Javacms,有一個(gè)顯著(zhù)的區別,
  基于Java的cms通常在JCR規范上構建內容,如Jackrabbit、ModeShape等
  而 PHP 的 cms 是直接基于 RDBMS 規范構建的,主要基于 MySQL。一般來(lái)說(shuō),Java 在內容管理方面更加面向對象。
  1.海象
  一個(gè)基于Spring框架的cms,無(wú)需單獨后臺,管理員登錄后直接編輯首頁(yè),所見(jiàn)即所得,還有與Jetty捆綁的發(fā)布包。
  2.木蘭
  比較成熟的cms系統,文檔比較詳細,發(fā)布包捆綁Tomcat,響應式設計,支持PC端和移動(dòng)端,內容架構在Jackrabbit上。
  安裝包分為公共實(shí)例和創(chuàng )作實(shí)例,即網(wǎng)站前后端內容管理。一個(gè)創(chuàng )作實(shí)例可以支持多個(gè)公共實(shí)例。
  提供多種頁(yè)面模板,分級內容管理,強大的可視化編輯功能,完整的訪(fǎng)問(wèn)控制(ACL)實(shí)現。
  Magnolia 在網(wǎng)站內容管理功能方面很棒,但架構有點(diǎn)過(guò)時(shí)。
  后臺頁(yè)面編輯界面:
  
  背景文章編輯界面:
  
  3.賈希亞
  功能齊全,支持PC端、移動(dòng)端等多種顯示渠道,響應式設計,這里和Drupal做個(gè)對比文章
  ~mrudula/Talloju_690.pdf
  但是,訪(fǎng)問(wèn)在線(xiàn)文檔很慢(訪(fǎng)問(wèn)時(shí)間2013.07.01)
  4.河馬
  提供網(wǎng)站前端在線(xiàn)demo,后端管理demo需要郵箱注冊,麻煩,企業(yè)級應用質(zhì)量開(kāi)源項目,同時(shí)支持PC端和移動(dòng)端。
  通過(guò)將表示層與內容和內容上下文分離的架構設計,實(shí)現了多渠道的內容發(fā)布。
  5. 點(diǎn)cms
  提供完整的前后端在線(xiàn)演示,基于SSH架構,強大靈活的后臺管理功能
  結論
  如果你更喜歡 Spring 的框架,那么 dotcms/WALRUS 是首選,如果你考慮到功能性、可用性和易于安裝,那么 Magnolia 是首選。
  通過(guò) iefreer

官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区