今天和大家一起聊聊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小时内与您取得联系。