寫在2021: 值得關注/學習的前端框架和工具庫


前言

最近在知乎看到了這么個問題:學完Vue還有必要學習React和Node嗎?[1], 有很奇妙的感覺,因為我在最開始入門前端時,也是以Vue入的門,在“學完”Vue之后, 我也有了這個疑問,但當時的我沒多想,覺得“技多不壓身”,反正都是前端,以后肯定用得上,那就學唄——

結果我一路到現在都是處于這么一種狀態:看到一個新的框架—看看文檔和場景—嗯哼,不錯—學! 雖然這樣也造成我目前沒有特別深入的方向,比如21屆的大佬們在工程化、微前端、AST、NodeJS等等方向都已經開始深耕,我還在當弟弟追著各種新框架學,但不得不說,在學習新事物的過程中,你會逐漸對這些框架進行分類(比如我下面進行的歸類)提取他們的共同點,這樣在開始學習一個新東西時,你通常已經擁有了可復用的經驗(比如在之前我感興趣的研究了一些裝飾器相關,使得后面入門Nest/Angular等都特別快),所以你的學習能力通常會是越來越強的

這個問題的題主很明顯遇到了大部分同學入門前端時會遇到的困惑:怎么這個還沒學完又看到說那個才是主流的怎么這個版本還沒吃透又來了一個break change的新版本怎么前端出框架的速度這么快??

很簡單,如果學有余力,學就是了。如果學不動了,就完全沒必要盯著前沿方向學(雖然前端網紅圈不是吹的),不要被“2021前端必備!再不學你就out了!” “學會這些,立刻月薪30k!”此類的標題迷花了眼,覺得不學就被人卷死了。就盯著一個方向甚至是一個框架吃透,在簡歷上,“了解過A、B、C,使用過D、E、F” 絕對不如 “深入了解A原理,精通B架構實現,C的collaborator/maintainer之一”。

但有一點請注意,學有余力不是因為當前方向淺嘗輒止而學有余力,是在當前方向足夠深入同時還學有余力~

對于不知道學啥的同學,就有了這篇文章,我會在接下來羅列我深入/嘗試/了解過的,認為值得學習的各個方向框架與工具類庫,并且對它們做一個簡要介紹。

對于我認為較為主流的則不會包含(如Vue與React框架本身這種~)。

Web

React

狀態管理

  • Jotai[2],原子化的狀態管理思路(就像React官方的Recoil),亮點是API比Recoil簡潔很多,對Suspense模式支持好,可以考慮用來代替useContext + useReducer。

  • IceStore[3],淘系Ice團隊出品的狀態管理庫,我在日常業務中使用最多的一個狀態管理方案,亮點是基于Immer來實現數據不可變,整體的使用方案類似Dva,state + reducer + effects,支持React Hooks寫法,TypeScript支持好。

  • XState[4],不止適用于React,可以和Vue/Svelte/Ember這樣的框架一起,也可以和RxJS這樣的響應式庫一起用。它對自己的定義也不包含狀態管理的字樣,而是有窮狀態機( finite state machines[5] )。暫時沒有使用過,不做展開介紹。

  • SWR[6]、React-Query[7]、useRequest[8],網絡請求的狀態管理、緩存、競態處理等。

生態

  • GatsbyJS[9],基于React的靜態頁面生成器,非常快。優點是有非常多的插件(plugin)和模板(starter),并且支持很多CMS(如Contentful、Neltify等),適合喜歡在線寫文檔的。我正在考慮把博客遷移到GatsbyJS + CMS的方案,這樣隨便找一臺電腦就能寫博客了。

  • React-Testing-Library[10],React測試庫,個人感覺和Enzyme代表了兩個不同方向,而RTL更符合直覺。RTL還提供了Hooks的測試庫,給力奧。

  • AHooks[11],阿里的React Hooks庫,我日常開發經常用到其中的Hooks。

  • Huse[12],百度工程效能團隊的Hooks庫,同樣很強大,里面的很多實現都比較hack(大量使用了useRef等),適合進階閱讀。

  • Dumi[13],螞蟻出品的React文檔生成器。

  • Immer[14],思路巧妙的數據不可變方案。

Angular!

  • Angular[15] 是我最近正在學的框架,在開始前我其實是拒絕的,但寫了兩個例子之后我覺得真香!你可能聽過它不好的一面:笨重、學習成本高、斷崖式更新..., 可能也聽過它好的一面:不需要再自己挑選路由、狀態管理方案、請求庫等、依賴注入很香適合后端程序員快速上手...。在最開始我就是處在這么個情況,直到我跟著官方教程走完第一個demo,我覺得我一段時間內不會再學Vue3了(對不起尤大)。整體的感受非常舒服:

    • 模塊劃分,我本人非常喜歡模塊化的思想(個人認為React的是組件化而不是模塊化),各個模塊完全自己干自己的,不管是多級路由還是復雜數據流都顯得結構清晰。

    • 模板語法,在用Vue的時候我沒有感覺到模板語法有多好,可能是因為模板和邏輯寫在一個文件里總覺得不純粹。但在Angular中模板被單獨放一個html文件,組件用Class的語法寫,我就莫名覺得爽快。

    • 大而全,這一點見仁見智,能接受的會覺得很舒服,并且團隊做定制也特別容易(schematics、generators、builders),各種規范是真的能確保不會一人一個寫法。

    • 學習成本,低情商:學Angular還要學TS和RxJS;高情商:學了Angular我就會TS和RxJS了!

      深入TS類型編程推薦我之前寫的這篇 TypeScript的另一面:類型編程[16]

  • 具體的不做展開介紹了,真的讓我滔滔不絕安利Ng這篇文章就收不住了,所以有興趣的同學歡迎去體驗下。

跨端

  • Taro[17],京東凹凸實驗室出品,應該是我目前見到支持最多端的跨端框架(但問題也不少,這個沒辦法),一直沒有用Taro寫過一個完整應用,有機會會試試的。

  • Rax[18],淘系Ice團隊出品,輕量、易用、高性能。同樣是淘系到集團廣泛使用的跨端方案。

  • Remax[19],小程序跨端框架,基于React,亮點是運行時方案(大部分跨端方案都是編譯時,還有Rax這種兩套方案都支持的)。

  • Ionic[20],出現比較早的一個跨端方案,最開始只支持Angular,現在還支持了React和Vue,暫時沒有使用過。目前的了解是性能與Vue支持上存在一些問題(所以Angular YES)。據說是曾經培訓班的標配?

  • Electron[21],不做介紹。

  • NwJS,微信小程序開發者工具就是用這個寫的,和Electron是同一個維護者(zcbenz[22])。

  • Flutter[23],不做介紹。

NodeJS

  • NestJS[24],一個大而全的Node框架,就像NodeJS里的Angular,實際上作者也是受到了Angular的影響,很多裝飾器都和Ng中的同名。你可能同樣在猶豫要不要學這玩意,我的意見是:

    因為確實NodeJS中目前沒有特別全面的框架(雖然NestJS在Spring面前也是弟弟)。NestJS基于Express(也有Fastify的適配),同樣預置好了各種能力,并且能很好的兼容Express中間件生態。我正在搗鼓的新項目就是基于Angular + Nest,越寫越爽。

    如果你打算Angular和Nest都學,我的建議是先學Nest,這樣入門Angular的學習路線會更平滑一點。

    如果你此前沒有接觸過依賴注入,可以瞅瞅我之前寫的這篇:走近MidwayJS:初識TS裝飾器與IoC機制[25]

  • MidwayJS[26],淘系Node架構出品,整個阿里都在用的Node框架,同樣基于裝飾器體系,你可以理解為復雜度與完善性方面低于NestJS,但是高于Egg和Koa。

    • Midway-Serverless[27],支持阿里云/騰訊云的Serverless框架,個人覺得是目前最好用的一個Serverless框架了,雖然Serverless[28](框架,不是真·Serverless)支持微信掃碼登錄也很頂。

    • Midway-Hooks[29],見下面的介紹

  • ts-node-dev[30] + tsconfig-paths[31],你是否受夠了ts-node的配置?是否難以忍受為了自動重啟還需要為nodemon配置ts-node作為執行?請使用ts-node-dev -r tsconfig-paths/register xxx/index.ts這一行命令即可~

  • TypeORM[32],最愛的ORM沒有之一(裝飾器 YES),也是目前NodeJS社區使用最多的兩個ORM之一(另一個是Sequelize,但是TS支持只能說emmm,社區的TS實現也只能說一般)。Query Builder、級聯、支持依賴注入,非常推薦試一試。

  • PM2[33],NodeJS進程管理工具,零宕機重啟、支持fork和cluster模式、blabla...,更????的地方在于提供了很geek的可視化界面,如我的服務器上截圖:

    image-20210304101632590
  • Prisma,下一代ORM,不僅僅是ORM。很新穎的使用方式(我是真的第一次見),TS支持非常好,Schema定義的方式也比傳統ORM各個實體定義分開的方式清晰很多,有興趣的可以瞅瞅我寫的這個demo:Prisma-Article-Example[34]

    文章在哪呢?當然是鴿在寫了。

  • Serverless,這個,就不做過多介紹了,懂的自然懂。(強烈建議至少了解一下)

  • BFF,Backend For Frontend,這里不做介紹。

GraphQL

夾帶私貨時間到 GraphQL是我稍微比較深入一點的方向,這里相關的類庫也會多一些。

Client

  • Apollo-Client[35],來自ApolloGraphQL[36]的作品,只有React版本是官方團隊在維護,Vue版本的被挪到Vue團隊了(VueUI有一部分就是基于Apollo-Client-Vue[37]寫的),Angular版本[38]的似乎是個人作品。強大的地方在于實現了一套GraphQL的緩存方案(GraphQL不像REST API那樣可以用URL作為緩存的key,它只有單個schema,要緩存必須基于Schema拍平整個數據結構,然后再基于各個field進行緩存控制)。

  • Relay[39],FaceBook出品,所以也比較受到推崇(我記得看到過原因是這樣,GraphQL如果要改啥,才剛進入草案,Relay團隊就已經提供了支持),但上手沒有Apollo-Client那么容易。

  • GraphQURL[40],Hasura(介紹見下面的Engine部分)出品,沒使用過。

  • GraphQL-Zeus[41],小而美的GraphQL客戶端,集成了Code-Generator能力。

Server

  • Apollo-Server[42]:ApolloGraphQL出品,提供了常見Node框架的實現(Koa/Express/Hapi/Fastify等),亮點是提供了getMiddleware這個方法,可以把整個GraphQL Server以中間件的形式掛載到一個Node應用上(我就是使用這種方式來同時提供REST和GraphQL兩套API的,但需要注意某些中間件的配置需要ignore掉掛載的路徑)

  • GraphQL-Yoga[43],Prisma團隊出品,基于Apollo-Server,封裝了一些特性,因此比Apollo-Server更容易上手,但功能卻更強,比如原生支持文件上傳這種。

Libs

  • TypeGraphQL[44],最愛的GraphQL工具庫沒有之一,讓你用TS的Class和裝飾器來定義GraphQL Type,和TypeORM Class-Validator一起用非常愉悅(當然,你需要能接受滿屏的裝飾器)。還提供了中間件(注意和服務端框架的中間件區分)、鑒權(推薦GraphQL API的鑒權只使用它提供的)、擴展、指令、聯合類型等。作者也很厲害,提供了和NestJS以及Prisma各自的集成包。

  • GraphiQL[45],可視化的GraphQL API調試工具,直觀的查看你的Schema、發起請求、查看問題,有一個增強版本是支持通過點擊單選框生成查詢語句,一時沒找到。

  • GraphQL-Playground[46],類似上一個,但是更美觀一些,支持跟蹤請求鏈路(Tracing)以及 Apollo Federation[47] 插件的集成(Query Plan)。

  • GraphQL-Code-Generator[48],很強大的工具,從.graphql文件到語言可以直接使用的方法/類型定義,這個思想實際上各個語言都有,如Dart和Ruby等。在TS中這個工具的主要能力就是生成TS的類型定義,同時它的插件體系還提供了更多的額外能力,如Apollo-Client的插件,讓你可以直接使用封裝好的的useXXXQuery等,前端連查詢語句都不用寫了;又或者基于Schema生成TypeGraphQL的Class定義,這一波反向生成我直接好家伙。

  • DataLoader[49],解決GraphQL Resolver深度優先執行導致的N+1問題,詳見GraphQL N+1 問題到DataLoader源碼解析[50]

  • GraphQL-Tools[51],提供了一堆讓你對GraphQL Schema為所欲為的方法,從Directive到Resolver到Schema,都給你安排的明明白白。但我只是比較簡單的使用過,用于和TypeGraphQL一起實現自定義指令,詳見 這里[52]

Engine

GraphQL Engine其實是一個非常神奇的方向,有點像REST那邊的各種自動生成REST API的工具。簡單地說,你提供一個數據庫,GraphQL Engine會為你基于數據庫的結構(可能這就是目前都支持PostgreSQL的原因?)生成GraphQL Schema、API、查詢語句(Query/Mutation/Subscription都支持,并且是根據你的Schema組合來的)等,可以說是非常猛了。

  • Hasura[53],功能比較全的一款,支持PostgreSQL和MSSQL,除了上面提到的以外還提供鑒權與觸發器(類似Serverless中的觸發器),以及把外部已經獨立部署的GraphQL API也納入管控。它提供的GraphiQL就是我上面提到的增強版本:

    image-20210304104225150

    Hasura還提供了前面說的GraphQURL作為client,hasura-code-gen來從Hasura服務生成TS代碼,所以基本上可以用Hasura的生態做為一套方案了,包括我也有看到過一些創業公司就在使用Hasura(有提供企業級支持)。

  • PostGraphile[54], 只支持PostgreSQL,優勢在于性能與插件系統來實現高度定制,還提供了數據庫工具。和Hasura一樣能自動基于級聯關系生成CRUD操作,同樣提供了企業級支持。

工程化

打包/構建工具

  • Webpack5[55],新的緩存方案和模塊聯邦還是值得了解下的。

  • Vite[56],關于Vite的文章太多了,我感覺只要入門了前端就肯定聽說過。

  • Parcel[57],最大的亮點是零配置,我在一些中小型項目使用過,很適合中小型規模以及只是想跑一下demo的場景,速度也挺快。(不會有人為了跑Demo還CRA從頭建一個項目吧)

  • SnowPack[58],原SkyPack,好像是最早應用ES Module特性到開發服務器的打包工具。

  • ESBuild[59],基于Go,是真的非常快。但不支持裝飾器語法[60],所以我用的比較少。

  • SWC[61],基于Rust,同樣非常快,但是沒用過。

  • Rollup[62],前端輪子哥Rich Harris[63]的作品,我還挺喜歡它的思想。了解到的比較多的用途是用來打包NodeJS的庫。

CI/CD

  • GitHub Actions[64],個人覺得,CI/CD只需要這個就夠了,上手也非常快,workflow、job、task、step,done!而且actions市場有各種大神們已經寫好的action讓你可以快速搭建一個嚴謹的工作流。比如:寫入環境變量—使用NodeJS 10/12/14,Windows/Linux/MacOS 最新版本,每個組合跑一遍構建流程,確保在每個組合都能構建成功—跑一遍Lint+單元測試,上傳測試覆蓋率—跑一遍ssh sync action,把構建產物上傳到自己服務器

  • TravisCI[65]

  • CircleCI[66]

  • GitLabCI[67],GitLab最大的優勢是可以自建,Runner也是不錯的設定~

靜態頁面托管

最常見的方式:使用這些服務托管靜態頁面,然后域名解析到自己的。

  • Vercel(原@zeit/now)[68]

  • Surge[69]

  • GitHub Pages[70]

  • Netlify[71]

云平臺

  • Heroku[72],可以用來部署你的API(白嫖YYDS)

  • Apollo Studio[73],ApolloGraphQL提供的GraphQL API管理工具,配合Apollo-Server的插件可以實現埋點統計、可視化分析等功能。

  • Vercel Functions[74],可以理解為是只需要Vercel賬號就能白嫖的Serverless Function,并且不需要f.yml這種配置。

  • Netlify Functions[75],類似上一個,但是收費。

  • Nx Cloud[76],Nx(詳細介紹見下面)提供的云平臺,主要功能是在項目達到一定規模,導致構建耗時較長時,避免每個開發人員要重新在自己本地構建一次項目,而是從云端下載已構建完成的文件,以此來提高效率。

Monorepo

  • Nx[77],我在用這個作為業務項目的Monorepo管理,到目前感覺都挺好,尤其是Angular + Nest項目,基于后端的GraphQL Schema生成TypeScript的類型定義和函數(GraphQL-Code-Generator),前端直接import { QueryDocument } from "@app/graphql", 爽!還支持React、Gatsby、NextJS、普通Web應用等,甚至集成好了Jest、Cypress、StoryBook等。

  • Lerna[78],我用這個作為工程項目的Monorepo管理。

  • Yarn Workspace[79],Yarn提供的Monorepo工具,有看到實踐是用Lerna來管理版本,Yarn Workspace管理依賴。

  • PNPM[80],實際上是包管理工具,但內置了Monorepo支持,我也在用這個(強烈安利),想要了解可以看看三元的這篇文章:為什么現在我更推薦pnpm而不是 npm/yarn ?

一體化框架

一體化框架指的是, 你的前后端項目放在同一個repo里(后端是Node),同時前端直接調用在后端定義的方法,由框架在編譯時去自動的把前端對后端的方法調用轉換成HTTP請求。這是最近前端還挺火熱的一個方向,主要的基于Node的一體化框架主要有這么幾個:

  • BlitzJS[81],前端NextJS,后端Prisma,中間基于GraphQL,但是實際上你不會直接去參與GraphQL Schema的編寫,不需要定義Resolver、ObjectType這些東西,因為BlitzJS內部用useQuery和useMutation抹掉了中間的調用過程(和Apollo的hooks類似但不完全相同,Apollo的useQuery接收的是GraphQL Document,BlitzJS中的則接收的是后端方法,其中會直接db.entity.create()這樣去寫數據庫)。

  • RedwoodJS[82],基于React + Prisma + GraphQL,整體類似于Blitz,但文檔全面的多,最佳實踐、測試、遷移、路線規劃都有非常詳細的介紹,甚至還介紹了框架名字的由來。但是由于暫時對TypeScript支持不是很好,所以我還沒體驗過。簡單來說,它和BlitzJS一樣都是在JAMStack這一理念上的革新者。

  • Midway-Hooks[83],繁易[84] 學長的作品,同樣是淘系乃至阿里集團內廣泛使用的框架。應該是三者中最適合國內場景的框架了,Serverless + Vue / React + Hooks,優勢也不少:跨前端框架、跨Serverless平臺、Hooks代碼更好維護與復用、更符合直覺的API定義 (NextJS的API Routes[85]總感覺差了點什么)。

通用

  • RxJS[86],ReactiveX實際上是一個“理念”,在各個語言都有相關的實現,如RxDart[87] RxJava[88] RxPy[89] RxGo[90] 等等,在對于異步的處理上是非常有幫助的一個庫,但有一定的學習成本,比如海量的操作符與操作符組合,想要熟練的搭配出適合當前場景的操作符組合需要一定的使用經驗,我也還在入門階段。

    • Redux-Observable[91], Redux的RxJS中間件。

    • Reactive.How[92],生動的展示RxJS Observable在操作符管道中的流動,入門期間使用有奇效。

  • NgRx[93],很好用的Angular的狀態管理方案,寫法和Redux非常像,也是action >>> reducer >>> state,所以幾乎可以沒有什么成本的上手。秉承了Angular的思想,提供了一整套的集成:和Angular Router的集成:@ngrx/router-store;對于集合類型的適配:@ngrx/entity;副作用管理:@ngrx/effects,以及必不可少的schematics:@ngrx/schematics等,最大的優勢是和RxJS的深度集成。

  • E2E測試:Cypress[94] / PlayWright[95],說實話很少能看到業務項目有完備的單元測試和集成測試,更不要說E2E測試了,因為的確要花不少時間。但還是推薦了解一下,畢竟我個人是喜歡這種穩定性保障的工作的,并且看著一個個測試用例通過也很有成就感。

  • StoryBook[96],UI組件的測試庫,亮點在提供隔離的沙盒來為組件進行測試,支持大部分的Web框架。

  • Babel[97],我下一個準備開始學習的方向之一,因為想通過Babel來簡單了解一下前端世界中的AST。

  • Tailwind[98],原子化CSS的集大成者,喜歡的人愛不釋手。

  • Husky[99],快速配置Git Hooks,多人團隊協作中確保規范的重要手段,通常會這樣使用:pre-commit執行linter和prettier,commit-msg檢查commit信息,pre-push構建、打tag、發包、運行測試等等。

  • LowDB[100],demo中常用的JSON數據庫,亮點在使用Lodash的API來操作數據庫。

  • JSON-Server[101],寫demo神器,從JSON文件快速得到一個REST API,和Husky、LowDB同一個作者。

  • TypeStack[102],包括Class-Validator[103](校驗)、Class-Transformer[104](TS類與普通對象之間的轉化、操作)、TypeDI[105](一個實現極簡的依賴注入庫)、Routing-Controllers[106](裝飾器路由)等一組TS工具庫,均基于裝飾器體系。

  • GenQL[107],從GraphQL Schema生成Query Builder,比較新所以還不怎么火,我挺看好這個庫的。

  • GraphQL-Voyager[108],可視化你的GraphQL API,比如我的這個demo: Voyager[109]

  • Majestic[110],Jest的GUI,直觀的查看你的測試用例。

  • scully[111],Angular的靜態頁面生成框架(我原本以為會叫NgxtJS?)

以上就是我 關注/接觸/嘗試/深度使用 過的大部分框架與工具庫了,如果你恰好學有余力又不知道該學啥,不妨就從這里找找感興趣的,最后再打個廣告,我所在的組(阿里巴巴-淘系技術部-前端架構)正在招2022級的前端實習生,如果你有興趣或恰好知道身邊有這樣的同學,歡迎投遞簡歷到我的郵箱:linbudu@qq.com

參考資料

[1]

學完Vue還有必要學習React和Node嗎?: https://www.zhihu.com/question/446723495/answer/1756515485

[2]

其余參考資料省略,點擊閱讀原文可跳轉


你好,我是若川,江西人~(點擊藍字了解我)歷時一年只寫了一個學習源碼整體架構系列?有哪些必看的JS庫:jQuery、underscore、lodash、sentry、vuex、axios、koa、redux

  1. 關注若川視野,回復"pdf" 領取優質前端書籍pdf,回復"1",可加群長期交流學習

  2. 我的博客地址:https://lxchuan12.gitee.io?歡迎收藏

  3. 覺得文章不錯,可以?分享、點贊、在看?呀^_^另外歡迎留言交流~

小提醒:若川視野公眾號面試、源碼等文章合集在菜單欄中間【源碼精選】按鈕,歡迎點擊閱讀,也可以星標我的公眾號,便于查找

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276139.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276139.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276139.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

萬物互聯之~RPC專欄

3.RPC引入 上篇回顧:萬物互聯之~深入篇 Code:https://github.com/lotapp/BaseCode/tree/master/python/6.net/6.rpc/ 其他專欄最新篇:協程加強之~兼容答疑篇 | 聊聊數據庫~SQL環境篇 3.1.概念 RPC(Remote Procedure Call):分布式系…

python判斷字符大小寫轉換_Python 字符串大小寫轉換的簡單實例

①所有字母都轉換為大寫# -*- coding:utf-8 -*-if __name__ "__main__":a hello, world!print(a.upper())輸出:HELLO, WORLD!②所有字母都轉換為小寫# -*- coding:utf-8 -*-if __name__ "__main__":a HELLO, WORLD!print(a.lower())輸出&am…

正則表達式如何匹配正反斜杠

轉載鏈接:http://wiki.ubuntu.org.cn/Python%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97#.E5.8F.8D.E6.96.9C.E6.9D.A0.E7.9A.84.E9.BA.BB.E7.83.A6 反斜杠的麻煩 在早期規定中,正則表達式用反斜杠字符 ("…

前端進階必備Node.js,你得了解一下

作為前端開發,工作中肯定離不開 JavaScript ,而 Node.js 是基于 JavaScript 語言和 V8 引擎的 Web 服務器項目,讓你可以直接使用 JavaScript 來搭架服務器。而且在 Node 環境下,通過模塊化的 JavaScript 代碼,加上函數…

Google推出“Google實驗室” Ad Innovations

4月1日消息,據國外媒體報道,Google近日推出了Ad Innovations功能,類似于“Google實驗室”,但專門用于展示最新的廣告技術、方案等,并征求廣告主的反饋。 目前Ad Innovations已有數款新功能,Google將按照反饋…

JS中utf8和GBK的字符編碼轉換

1、PHP中的 json_encode 函數只限編碼UTF-8的數據,當轉換GBK或者GB2312等編碼的數據時,會將漢字轉為NULL。 2、JavaScript 中json 的使用: ① 將對象轉為json字符串:JSON.stringify(obj)② 將json轉為對象:dataObj ev…

tcptracerte參數_TCP/IP詳解學習筆記(4)-ICMP協議,ping和Traceroute【轉】

1.IMCP協議介紹前面講到了,IP協議并不是一個可靠的協議,它不保證數據被送達,那么,自然的,保證數據送達的工作應該由其他的模塊來完成。其中一個重要的模塊就是ICMP(網絡控制報文)協議。當傳送IP數據包發生錯誤&#xf…

[實踐系列]Promises/A+規范

前言 [實踐系列] 主要是讓我們通過實踐去加深對一些原理的理解。 實踐系列-前端路由 實踐系列-Babel原理 有興趣的同學可以關注 實踐系列 。 求star求follow~ 什么是Promise ? Promise是JS異步編程中的重要概念,異步抽象處理對象,是目前比較流行Javas…

Web Components 上手指南

現在的前端開發基本離不開 React、Vue 這兩個框架的支撐,而這兩個框架下面又衍生出了許多的自定義組件庫:Element(Vue)Ant Design(React)這些組件庫的出現,讓我們可以直接使用已經封裝好的組件&…

隱藏網頁文件的后綴(IIS測試通過)!

網上很多網站會看到如這樣的地址: /content?actadd&id1 /column?actedit&id2 原本是 /content.asp?actadd&id1 /column.asp?actedit&id2 這樣的效果就是在iis上做了下手腳,使用了rewrite重寫組件,就可以實現。 rewrite.rar轉載于:ht…

Linux下查看文件內容的ASCII碼以檢查內容的編碼一致

轉載鏈接:http://blog.csdn.net/tiantang46800/article/details/6460567 ascii查詢方式,查看文件以ascii顯示,od命令 隨著計算機飛速的發展,很多人開始學習Linux,怎樣才能學好Linux,一定要學好Linux的命令…

乘基取整法是什么_十進制小數轉二進制小數乘2取整法的直觀理解

乘2取整法介紹舉例:0.35轉換成二進制0.3520.7 取0(d1)0.721.4 取1(d2)0.420.8 取0(d3)0.821.6 取1(d4)0.621.2 取1(d5)0.220.4 取0(d6)直到滿足規定的位數為止所以(0.35)10(0.d1d2d3d4d5d6)2(0.010110)2這個方法不難掌握,就是有點不好理解&#xf…

如何遠程連接Windows和linux服務器

linux的方法在下面 Windows服務器遠程連接 登錄控制臺查看服務器系統是什么系統例如阿里云的ECS服務器 Windows系統可以使用微軟自帶的遠程工具進行連接,可以連接的系統有Windows server 和Windows 7-10 等等系列;Windows系統,例如Windows10系…

URL是什么

URL是什么意思? 懸賞分:0 - 提問時間2006-3-12 08:14我在玩QQ空間的時候,在添加音樂時會有一個添加URL的地方‘~我是想問那是什么意思???提問者: caoyiwang1107 - 魔法學徒 一級 其他…

手把手教你接入前端熱門抓包神器 - whistle

大家好,我是若川,今天推薦騰訊前端團隊的這篇好文。whistle 是一個基于 Node.js 的跨平臺網絡調試工具。最近隨著 Nohost 的開源,有不少同學問了 whistle 相關的問題,本篇文章將結合幾個常見的業務場景介紹如何在本地前端項目開發…

Linux命令之hexdump - ”十六“進制查看器

轉載鏈接:http://codingstandards.iteye.com/blog/805778 用途說明 hexdump命令一般用來查看”二進制“文件的十六進制編碼,但實際上它的用途不止如此,手冊頁上的說法是“ascii, decimal, hexadecimal, octal dump“,這也就是本文…

使用數據增強技術提升模型泛化能力

在《提高模型性能,你可以嘗試這幾招...》一文中,我們給出了幾種提高模型性能的方法,但這篇文章是在訓練數據集不變的前提下提出的優化方案。其實對于深度學習而言,數據量的多寡通常對模型性能的影響更大,所以擴充數據規…

關于不同用戶進入系統報錯的請求

我自己搞了個系統,用超級用戶進入系統正常,用普通用戶進入系統就報錯,Microsoft JET Database Engine (0x80040E07) 標準表達式中數據類型不匹配。 /xs/huiyuan/huiyuan_bf.asp, 第 203 行 代碼如下請各位高手幫忙 <% if request.Cookies("shiwei_username")"…

React 與 Vue 框架的設計思路大 PK

大家好&#xff0c;我是若川。今天分享一篇框架設計思路的好文。關于我 大家好我是花果山的大圣&#xff0c;今天很榮幸&#xff0c;有機會跟大家分享一下很多年輕人感興趣的話題《 Vue 和 React 設計思想 PK》,個人水平有限&#xff0c;如果有理解不到位的請傾盆&#xff0c;大…

php foreach id是否存在數組_請糾正這 5 個 PHP 編碼小陋習

在做過大量的代碼審查后&#xff0c;我經常看到一些重復的錯誤&#xff0c;以下是糾正這些錯誤的方法。在循環之前測試數組是否為空$items [];// ...if (count($items) > 0) {foreach ($items as $item) {// process on $item ...}}foreach以及數組函數 (array_*) 可以處理…