標籤:

慢時光

原地址:簡書

前言:

從自己決定辭職,到報名飢人谷進行學習,兩個月了。在這兩個月里,心無旁騖,專註於前端的學習,看飢人谷任務班的教學視頻,動手敲代碼,調試,看文檔,查資料,問老師和同學,完成任務班的任務。兩個月過去,我也學完了入門,進階,高級模塊,了解前端工作模式,學習一些前端工具,比如webpack,gulp和requirejs等等,做出自己的第一個網站,算是對自己的學習有一個階段性的總結,順便了解後端的工作流程。

下一步準備深入學習前端框架,react,vue,進一步提高自己。

網站簡介

慢時光----我的第一個網站

我建的第一個網站,類似學生時代學校外面奶茶店的留言牆,使用github登錄之後,可以在上面留言。

慢時光

點擊左邊的「添加按鈕」,會出現一個新的留言條,輸內容後,留言條就會在按照瀑布流形式排布。雙擊釘子刪除,刪除後瀑布流重新排布。

點擊留言文本區,可以修改留言內容。在導航條右邊是用戶信息,可以登錄和註銷。遊客只有訪問的許可權,沒有修改許可權。

以上就是網站的全部功能。

網站建設之思想

網站功能簡單,相應的邏輯也很簡單,主要是用戶登錄後留言條信息的存儲,查詢和修改,用戶許可權也可以通過在信息中加入用戶ID實現。用戶進行相應操作時,會先進行相應的判斷,用戶ID符合才可以進行相應操作。如果匹配不上,就會彈出「您沒有許可權」的提醒。

在網站建設開始之前,前後端默認分離,前端負責頁面的互動和效果展示,後端負責數據處理,前後端通過請求進行數據交流,因此要先約定好請求的埠,發送數據類型及數據的含義,很重要!!!

網站建設之工具

建設這個網站整體框架采有express搭建,後端數據採用sequelize,github登錄採用passport,這是後端。然後,網站前端,也就是頁面,整體採用瀑布流布局,採用jQuery編碼,組件化思想,將每個功能組件分開,然後採用面向對象編程,用webpack進行打包,ajax進行數據請求。

在前端工作中,我認為最核心的思想,就是組件化。將每個功能分開,模塊化,工具化,需要時在通過require進行調用,前端工作將變成組裝模塊,前端工作將大大減少,從而有更大的時間和精力進行開發,新功能的普及速度也會大大提高。

網站建設之實戰

Step1

新建項目文件夾,初始化:

$npm instal express --save;//安裝express,並生成依賴

$ npm install express-generator -g;//安裝express應用生成器

$ express myapp;//當前工作目錄下創建一個命名為 myapp 的應用

$ cd myapp ;//進入myapp文件夾

$ npm install;//安裝所以依賴

初始化網站框架

到這一步,一個網站的框架就已經完成啦,通過$ node ./bin/www就可以本地開啟伺服器,瀏覽器打開http://loaclhost:3000就看到了網頁。(通過package.json設置命令「start」為「 node ./bin/www」,就可以直接通過npm start開啟)

Step2

這個網站的模板引擎採用ejs,主要語法和HTML一樣,不過也支持JavaScript語言,通過<% %>將JavaScript語言包裹就可以運行。我的主要思路是先寫好html頁面(可以用瀏覽器打開,便於修改),然後將不變的內容複製 進去模板引擎中,需要修改的地方再加入JavaScript修改。

模板引擎和HTML頁面

模板引擎中修改的部分

然後就是頁面的互動,note的增刪改查,瀑布流布局,登錄註銷,彈窗提示,這對於專業前端的我(手動邏輯)來說,小case啦,啪啪啪搞定。

JavaScript代碼文件

至此,我們的網站主頁就完成啦。

坑點:

1.public是網站的靜態目錄,在app.js中設置,因此,模板引擎中引用只需從public文件下開始。

2.webpack.config.js設置文件中,入口和出口採用「path」模塊,定位文件所在目錄,不然gitbash在其他目錄下打開webpack會報錯。

webpack設置

3.登錄按鈕採用a標籤,而不是ajax發送請求,因為oauth2.0協議需要頁面跳轉進行登錄,ajax發送請求不會進行頁面的刷新,也就是說引起瀏覽器報錯,因為不同源。

Step3

到這一步,前端的工作已經完成80%,後面只需要進行調試和增加許可權設置,主要進行後端的工作。

網站的入口是bin目錄下www文件,就是監聽loaclhost:3000埠,一發現請求就轉入app.js文件,app.js才是整個網站的真正入口。

app.js---網站真正入口

內容很多,引入各種模塊,進行各種初始化設置。網站入口就是上圖所示,當接收到/請求時,轉入index文件,就是在routes文件下的index.js(app.js中設置idnex的位置)。

在index.js中,我們就可以開始我們的設置啦。登錄請求,刪除請求,增加請求等等一系列請求,針對不同的請求,進行不同的數據反饋。

index.js---網站核心邏輯

到這裡,前後端已經連接起來,可以運行啦!

不對,還是少了些神馬,忘記了,還沒有建立資料庫,用戶的信息沒有報保存,這才是真正的後端呀。

通過sequelize模塊,建立資料庫,還需要安裝sqlite3模塊哦。建立一個note表,存儲用戶數據,只需要建立text和username行,數據自帶的有ID和createAt,updateAt。

note.js---後端的後端:資料庫

index.js通過引入note模塊,增刪改查資料庫里的數據,從而實現用戶數據的保存和刪除。

到這一步,網站的前後端完成,網站算是完成啦!!

坑點:

因為網站比較簡單,邏輯清晰,不存在什麼其他的坑點,唯一的就是登錄了。引入passport模塊和passport-github模塊,申請github的oauth app,然後再設置id和密碼,特別主要callbackURL不能錯,index.js設置和github裡面必須一致才可以登錄驗證。

再說一句,前後端埠必須先約定好,最好是記錄下來,不然就很容易變坑。

Step4

網站已經全部建成,最後一步就是上線啦,我使用的是飢人谷的伺服器,域名申請的是阿里的。

到這一步了,只需要把文件上傳伺服器,然後輸入npm start就可以打開啦。但是,但是,怎麼上傳呀?這遠程伺服器又不能像自己電腦一樣,原諒我,我就是這樣無奈的在這一步卡住了。ftp的client端上傳,主機沒有設置,scp遠程拷貝,原諒一下。最後,受谷里同學提醒,先上傳github,然後從github上clone下來,正好還可以複習下github操作。一番操作猛如虎,git add ., git commit -ma 「add files」, git push origin master 上傳成功。然後主機登錄,git clone,添加秘鑰,再git clone 完成啦。

npm start,網站正式開啟。

網站主頁---未登錄

最後一個坑點,其實也算不上坑點,就是長期開啟伺服器,使用pm2命令,讓nodejs 應用命令行持久化,關閉gitbash也可以訪問網站啦,這,才是真正的完成。

網站建設之感受

建立這個網站,前前後後差不多花了一個星期時間,查看每個模塊的文檔,一步步調試,到最後上線,看著心裡還是挺自豪的。在此要特別感謝下飢人谷的老師們和同學,提出的問題都可以耐心回答,少走了很多彎路。

老實說,這個網站不夠漂亮,還存在很多問題,後續我會繼續對它進行改進,在做網站時就有的一些想法,由於時間關係而沒有加入進去,後期通過學習,慢慢添加進來。

Idea1:做一個網站進入的動畫效果,進入時間隧道,回到初中學校胖的奶茶店裡,最後聚焦在這片充滿回憶的留言牆上。思路是添加一段視頻,進入時展示,然後就刪除。

Idea2:留言牆背景換成牆的圖片,留言條樣式也換成紙條形式,通過css實現。

Idea3:留言條不拘泥於留言,應該還可以是照片。

Idea4:刪除和添加增加動畫效果,更加溫馨,彈窗也更加人性化。

Idea5:增加查詢功能,可以找到自己想看的人的留言,也給用戶添加許可權,設置僅自己可見和他人可見;

Idea5:留言條下面增加點贊,隨著用戶增多,留言牆第一頁只展示點贊最多的留言。

Idea6:增加qq登錄和微信登錄,畢竟國人專屬。

ps:最後放一張一直陪我學習的小夥伴。

它就這樣默默的監督我學習

提醒我休息

推薦閱讀:

引入 CSS 的方式
前端開發者應知必會:瀏覽器是如何渲染網頁的
「每日一題」CSRF 是什麼?
從零學習前端開發·HTML
你可能不知道的 css 內容塊

TAG:前端入门 |