今天和大家一起聊聊JavaScript的推薦書籍,每一本都是精選,做前端開發的朋友們如果沒讀過,可以嘗試一下。下面給大家簡單介紹了書的內容,還有讀書的方法,希望可以幫大家提升讀書效率。
第一本推薦的就是經典中的經典,我感覺所有做前端開發的朋友們都應該有這本書,不要以為書名寫著高級,就很難,就不適合新手。只要您掌握讀書的方法,這本書可以帶你從入門到進階。
對于初學者,推薦從第3-9章和第13,14章,每一章不要把所有小節都看完,只看2到3節就好,這樣,就能組合出一套經典的js初級教程。把里面的東西都吃透了,代碼自己盡量都寫一遍。看懂和能寫出來還是有區別的。
經過了上面的學習,js基礎應該已經打下來了,然后可以試著了解每一章的后幾節內容,js技能水平會有顯著提升。
《JavaScript高級程序設計》可以說是ES5語言層面的經典之作,那《JavaScript DOM編程藝術》就是新手入門DOM的經典之作。大家可以看到上一本書中我們跳過了10、11、12章,這三章講的就是DOM,我們可以從《JavaScript DOM編程藝術》這本書中,用更舒適的學習曲線和更優雅的代碼來學習DOM的相關知識。
需要特殊說明的是,這本書是絕對的入門書籍,如果有些新人對《JavaScript高級程序設計》這本重量級教科書不適用的話,用這本《JavaScript DOM編程藝術》入手JavaScript語言也是可以的。
終于說到犀牛書了,這本網上很多人都推薦,但我并不推薦大家讀這本更重量級的書,畢竟1000多頁,從頭讀到尾還是需要毅力的。
坦白的說,這本書寫的非常好,但是很多內容與《JavaScript高級程序設計》重疊,所以可以把這本書當做工具書,對于某些知識點,如果感覺《JavaScript高級程序設計》的講法不和你胃口(其實就是沒看明白),可以來《JavaScript權威指南》中找找答案。兩本書互補,會有不錯的效果。
第一本國產書登場,前幾本書都是以ES5為基礎的,這本書雖然名字教《ES6標準入門》,但寫的都是ES2015+的特性。書中的案例看得出都是阮一峰老師精選的,而且案例之間的關系銜接得當,語言表達思路清晰易懂(這是阮老師一貫風格)。如果想系統的學習ES2015+的特性,這本書是不二的選擇。
這是一本神奇的書,匯總了幾乎所有JavaScript的疑難雜癥,然后一一講解。
書寫的很好,但是這是本絕對的進階教程,如果沒有一點JavaScript功底,還是不要碰這本書了。
很多前端新人感覺JavaScript都是一道難題,更別說數據結構與算法了。這本書可以解決大家的疑慮。他用JavaScript,簡潔地實現了各種常見的數據結構和算法,內容并不復雜,可以作為前端朋友們修煉基本功的教科書。
今天就介紹這六本教科書(其實是七本,《你不知道的JavaScript》出了上卷和中卷兩本書),大家如果有時間的話可以看一下。我看的書里面就感覺這基本比較好,所以給大家推薦一下。《JavaScript語言精粹》(蝴蝶書)聽說也不錯,但是沒有讀過,就不在這獻丑了。
我建議大家在購買書籍之前,先到網上下載一份電子版,看看這本書是否適合自己,這些書網上都能搜得到。
如果喜歡這些,我建議大家買紙質的正版書籍,我感覺讀電子書永遠都沒有讀紙版書那樣的感覺。
天我會帶大家真正寫一個Django項目,對于入門來說是有點難度的,因為邏輯比較復雜,但是真正的知識就是函數與面向對象,這也是培養用Django思維寫項目的開始
這是小編準備的Django學習資料+python學習資料,關注,轉發,私信小編“01”即可獲取!
看不明白?有圖有真相:
剛開始學習時可在配置文件中暫時禁用csrf中間件,方便表單提交測試。
文件路徑 test_site -- test_site -- settings.py
Django為什么要配置數據庫
因為Django默認采用的是sqlite3數據庫,而我們用Pycharm編寫程序時使用的是Pymysql模塊和數據庫交互的,為了能夠簡化編寫程序的流程,我們需要修改默認數據庫配置
在修改數據配置之前,我們是不是要先有數據庫,請先創建一個MySQL數據庫吧
文件路徑 test_site -- test_site -- settings.py
在和settings.py同目錄下的 __init__.py文件中做配置
文件路徑 test_site -- test_site -- __init__.py
至此,用Django寫項目,相關的配置已完成,但是有一些關于Django的基礎知識要學習,就像print一樣簡單,這也是我們寫項目的準備工作之一
Django基礎必備三件套(三個小模塊)
HttpResponse 把數據返回給瀏覽器
這個模塊名字起的特別好,根據名字就能大概猜出來的他的意思,真會起名字,不想某些人,寫一套編程語言,用個什么蟒蛇,寫個框架用個樂手的名字,真的是不為程序員著想
內部傳入一個字符串,返回給瀏覽器,我們在上一章的Hello World就是這么寫的
render 對位填充
render 本意就是著色,粉刷的意思,很好理解,使用方式需要記住
除request參數外還接受一個待渲染的模板文件和一個保存具體數據的字典參數。
將數據填充進模板文件,最后把結果返回給瀏覽器。(類似于我們上章用到的jinja2)
def index(request): # 業務邏輯代碼 return render(request, "index.html", {"name": "Albert", "hobby": ["音樂", "籃球"]})
redirect 重定向
接受一個URL參數,表示跳轉到指定的URL
注意:“” 里面的兩個/ / 能少,不寫會報錯!注意:“” 里面的兩個/ / 能少,不寫會報錯!注意:“” 里面的兩個/ / 能少,不寫會報錯!
重定向實現原理
redirect 默認的302(臨時重定向),30* 都是重定向,301是永久重定向,對于seo工程師用永久重定向比較多,如果要變為永久重定向,只需要
在redirect()里面增加這段代碼即可
permanent=True
Django寫圖書管理系統
目標要求:
分別展示出出版社頁面,書籍頁面和作者頁面
一個出版社可以出版多本書籍(一對多)
一個作者可以寫多本書,一本書也可有多個作者(多對多)
在完成以上配置之后,其實這個程序就已經寫了一半了,是Django幫你寫的,接下來真正的Python代碼我們只需要寫函數和類,在實際的工作中,也是這樣的
為了能讓大家更清楚掌握用Django寫程序的過程,接下來我們按照過程先后帶領大家把這個程序實現
創建Django項目
開始項目
在終端下寫入如下指令
# Django-admin startproject lms# cd lms# python3 manage.py startapp app01
當然以上操作你也可以在Pycharm上進行,完全沒有問題
創建數據庫
注意數據庫的名字,自己創建
修改配置
按照以上方法操作執行
建立url對應關系
在用戶通過鏈接訪問你的網站的時候,對于用戶來說這是一個鏈接地址,對于程序來時其實是一個函數,通過這個函數才找到數據庫中的對象,對象的方法和整個的前端頁面
文件路徑:和settings同目錄下
創建對象,并關聯數據庫
找到app01這個文件夾,也就是項目應用的主文件夾下面有modes.py 文件,這個文件就是我們用來存放類和對象的文件,這里需要用到ORM(對象關系映射),這里我們先記住他的使用方法就好了,過幾天帶大家手寫一個ORM。
注意:其他文件不要動,其他文件不要動,其他文件不要動
同樣是app01文件夾下的views.py這個文件,上面的urls.py文件中的函數都是從這個文件中引入的,這個文件是最主要的文件
前端基本上是一直在重復的頁面,注意幾個與后端建立聯系的地方就好了
前端復雜的部分是與數據庫多表查詢的部分,需要用for循環,注意for循環在Django中的使用方式
近在看Flask教程,其中有一個作業是這樣的:
# 創建一個項目,用來說明出版社、書籍和作者的關系
# 假定關系:作者:書籍=> 1:n (一本書由一個作者完成,一個作者可以創作多本書)
# 出版社:書籍=> n:n (一個出版社可以出版多本書,一本書可以由多個出版社出版)
# 要求:
# 1. 在書籍的 book_index.html 中有一個“查看所有書籍”的超鏈接按鈕,點擊進入書籍列表 book_list.html 頁面
# 2. 在書籍的 book_list.html 中顯示所有書名,點擊書名可以進入書籍詳情 book_detail.html
# 3. 在書籍的 book_detail.html 中可以點擊該書的作者和出版社,進入作者詳情的 author_detail.html 和出版社詳情頁 publisher_detail.html
這里做一下記錄。
學習過其他web框架應該對MVT或者MVC有一定的了解,這里不做展開介紹。在還需要使用模板的時候,Flask項目一般使用MVT(M:models,V:views,T:templates),基本流程如下:
整體流程
直接輸入命令就行:
# 安裝 flask-sqlalchemy (用于ORM)
pip install flask-sqlalchemy
# 安裝 flask-migrate (用于數據遷移)
pip install flask-migrate
# 安裝pymysql (用于MySQL驅動)
pip install pymysql
項目不是太復雜的話,一般是這樣的結構:
項目結構
app.py是啟動入口:
app.py
里面調用了一個工廠函數create_app():
工廠函數
工廠函數中調用了views和exts,還配置了數據庫參數。views就是視圖函數,主要是從中引用了一個Blueprint對象。exts是一些插件的配置入口:
exts.py
在models中主要是配置數據結構:
from .exts import db
# 作者
class Author(db.Model):
id=db.Column(db.Integer, primary_key=True, autoincrement=True)
name=db.Column(db.String(20), unique=True)
age=db.Column(db.Integer, default=1)
sex=db.Column(db.Boolean, default=True)
email=db.Column(db.String(200))
# 關系
books=db.relationship('Book', backref='authors', lazy='dynamic')
# 書籍
class Book(db.Model):
id=db.Column(db.Integer, primary_key=True, autoincrement=True)
title=db.Column(db.String(100), unique=True)
date=db.Column(db.DateTime)
# 1對多,外鍵
author=db.Column(db.Integer, db.ForeignKey(Author.id))
# 中間表(書籍-出版社)
book_publisher=db.Table('book_publisher',
db.Column('book_id', db.Integer,
db.ForeignKey('book.id'), primary_key=True),
db.Column('publisher_id', db.Integer,
db.ForeignKey('publisher.id'), primary_key=True)
)
# 出版社
class Publisher(db.Model):
id=db.Column(db.Integer, primary_key=True, autoincrement=True)
name=db.Column(db.String(20), unique=True)
address=db.Column(db.String(200))
city=db.Column(db.String(100))
province=db.Column(db.String(100))
country=db.Column(db.String(100))
website=db.Column(db.String(100))
# 多對多,關聯book表
books=db.relationship('Book', backref='publishers', secondary=book_publisher, lazy='dynamic')
models中的外鍵和relationsip設置屬性都比較基礎,不清楚的可以查一下資料。
完成models后,在views中需要引用一下:
views.py
這個時候可以進行數據遷移了,在數據庫中將表結構都建造出來:
進入項目目錄,執行命令:
flask db init # 創建遷移文件夾migrates,只調用一次
flask db migrate 生成遷移文件
flask db upgrade 執行遷移文件中的升級
flask db downgrade 執行遷移文件中的降級(只有升級異常后才使用)
執行數據遷移:
控制臺
在views中這樣寫:
from flask import Blueprint, render_template
from .models import *
book_blue=Blueprint('book', __name__)
@book_blue.route('/')
@book_blue.route('/bookindex/')
def book_index():
return render_template('book_index.html')
@book_blue.route('/booklist/')
def book_list():
authors=Author.query.all()
print(authors)
books=Book.query.all()
print(books)
return render_template('book_list.html', books=books)
@book_blue.route('/bookdetail/<int:bid>/')
def book_detail(bid):
book=Book.query.get(bid)
return render_template('book_detail.html', book=book)
@book_blue.route('/authordetail/<int:aid>/')
def author_detail(aid):
author=Author.query.get(aid)
return render_template('author_detail.html', author=author)
@book_blue.route('/publisherdetail/<int:pid>/')
def publisher_detail(pid):
publisher=Publisher.query.get(pid)
return render_template('publisher_detail.html', publisher=publisher)
這里有使用幾個html的模板文件,分別這樣寫:
book_index.html
book_list.html
book_detail.html
author_detail.html
publisher_detail.html
首頁效果:
首頁
書籍列表:
書籍列表
書籍詳情:
書籍詳情
作者詳情:
作者詳情
出版社詳情:
出版社詳情
Flask作為python的輕量級web開發框架,的確是非常容易上手,各種三方插件也非常豐富,對于各種demo的開發是非常好的選擇。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。