[TOC]
>[success] # 前端的簡單概念
>[danger] ##### 編寫一個簡單的控制臺輸出函數
~~~
1.平常在控制臺輸入我們使用console.log('1111')
2.簡單的縮寫定義一個函數,調用這個函數觸發console.log
~~~
~~~
var log = function() {
console.log.apply(console, arguments)
}
log("代碼開始")
~~~
>[danger] ##### 基本概念介紹
~~~
1.js 的注釋 單行注釋 //
2.js 的注釋 多行注釋/* */
3.變量聲明 var a = 1
4.多行變量聲明 使用 ` `包裹住反引號(數字 1 左邊的按鍵)
5.js 的布爾值是 true 和 false
6.js 用來表示空的關鍵字有 undefined 和 null 兩個,第一個是未定義,第二個是對象為空
7.函數的定義 兩種,第一種正常定義函數,第二種匿名函數
8.js 列表叫數組,只是 append 變成了 push
9.js 中字典叫做對象,并且可以省略 key 的引號
~~~
* 下面的代碼是對 7,8,9 的一展示
~~~
// 命名函數
function greeting(){
log('hello')
}
// 匿名函數
var greeting = function() {
log('hello')
}
~~~
~~~
var arr = [1, 2, 3]
arr.push(4)
~~~
~~~
var obj = {
'key': 'value',
name: 'gua',
}
log('object key', obj.key, obj['key'])
~~~
>[success] # 簡單的事件操作
~~~
1.js 是操作 DOM對象的 ,介紹一個比較好用的獲取方法,但在特定瀏覽器會出現不兼容的問題querySelector
// 元素選擇器
var body = document.querySelector('body')
// class 選擇器, 用的是 .類名
var form = document.querySelector('.login-form')
// id 選擇器, 用的是 #id
var loginButton = document.querySelector('#id-button-login')
~~~
>[danger] ##### 簡單案例了解 -- querySelector
~~~
<div class="login-form">
<input id="id-input-username" class='gua-input' type="text" value="gua">
<br>
<input id="id-input-password" class='gua-input' type="password" value="123">
<br>
<button id="id-button-login">登錄按鈕</button>
</div>
<h1 id='id-msg'></h1>
<script>
var user = document.querySelector('#id-input-username')
var userValue = user.value
user.value = 'set value'
</script>
~~~
>[danger] ##### 將文字插入標簽的指定位置 -- insertAdajcentHTML
~~~
四個指定位置的值:
1.beforeBegin --插入到標簽開始前
2.afterBegin -- 插入到標簽開始標記之后
3.beforeEnd --插入到標簽結束標記前
4.afterEnd --插入到標簽結束標記后
使用的方法:
ele.insertAdjacentHTML('beforeend', '<h1 class="gua-h1">你好</h1>') // ele 是標簽對象
~~~
>[danger] ##### 刪除標簽對象 -- remove()
~~~
var pwd = document.querySelector('#id-input-password')
pwd.remove()
~~~
>[danger] ##### 對非input 標簽內添加文本
~~~
var msg = document.querySelector('#id-msg')
msg.innerHTML = '<button>你好</button>'
// innerHTML 不會轉義字符串
// innerText 會轉義字符串
msg.innerText = '<button>text</button>'
~~~
>[danger] ##### 綁定點擊事件 -- addEventListener
~~~
1. ie8 不支持
2.ele.addEventListener(1,2,3) 三個參數第一個參數是觸發的事件,第二個是函數,第三個是否冒泡
~~~
~~~
// 1, 獲得按鈕
var loginButton = document.querySelector('#id-button-login')
// 2, 聲明一個函數, 用于在按鈕點擊后執行
var clicked = function() {
log('按鈕被點擊到了')
}
// 3, 添加事件, 使用 addEventListener 函數
// 它有兩個參數
// 第一個是事件的名字, 'click' 表示點擊
// 第二個是事件發生后會被自動調用的函數
loginButton.addEventListener('click', clicked)
~~~
>[danger] ##### json
~~~
1.有一個常見的需求是在 字典/數組 和 字符串 之間相互轉換
2.這個過程叫做 序列化/反序列化
~~~
~~~
var s = JSON.stringify([1, 2, 3, 4])
log('序列化后的字符串', typeof s, s)
var a = JSON.parse(s)
log('反序列化后的數組', typeof a, a)
打印結果:
序列化后的字符串 string [1,2,3,4]
todo.js:9 反序列化后的數組 object (4)?[1, 2, 3, 4]
~~~
>[success] # 案例

>[danger] ##### 代碼
~~~
1.${} js 綁定模板的使用
2.使用點擊事件綁定
3.addEventListener
4.刪除寫法看一看學習套路
~~~
~~~
<input id='id-input-todo'>
<button id='id-button-add'>add</button>
<div class="todo-list">
<div class="todo-cell">
<button class="todo-delete">刪除</button>
<span>吃飯</span>
</div>
</div>
<script src='todo.js'>
function log() {
console.log.apply(console, arguments)
}
function e(ele) {
return document.querySelector(ele)
}
// 創建一個 添加模板
var todoTemplate = function (todo) {
var t = `
<div class="todo-cell">
<button class="todo-delete">刪除</button>
<span>${todo}</span>
</div>
`
return t
}
// 將模板插入指定位置
var insertTodo = function (todo) {
var todoCell = todoTemplate(todo)
var todoList = e('.todo-list').insertAdjacentHTML('beforeend',todoCell)
}
// 綁定添加事件
var addObj = e('#id-button-add')
addObj.addEventListener('click',function () {
var inputVal = e('#id-input-todo').value
// 調用創建模板的方法
insertTodo(todo)
})
// ----------------- 刪除 -------------------
var todolist = e('.todo-list')
todoList.addEventListener('click',function (e) {
var self = e.target
if (self.classList.contains('todo-delete')) {
log('點到了 刪除按鈕')
// 刪除 self 的父節點
// parentElement 可以訪問到元素的父節點
self.parentElement.remove()
} else {
// log('點擊的不是刪除按鈕******')
}
})
</script>
~~~
- 網絡原理
- 為搭建框架做準備
- 簡單認識網路
- 自定義模擬網站案例
- 優化最終框架
- 數據存儲 -- data
- 用戶個人信息存儲 -- User.txt
- 路由映射 -- routes
- 處理用戶信息 -- routes_static.py
- 保存靜態文件 -- static
- templates -- html 集中處理模塊
- 首頁 -- index.html
- 登陸 -- login.html
- 用戶注冊頁面 -- register
- 日志模塊 -- log.gua.txt
- 啟動文件--server.py
- orm處理 -- model.py
- 日志模塊 -- utils.py
- 兩種數據庫類型
- 傳統數據庫了解篇
- 前端快速入門
- JS簡單使用入門
- css簡單快速入門
- DJANGO
- virtualenv-創建虛擬環境
- 項目結構
- django-admin中文配置
- django-打印sql語句
- django-基礎
- 認識MVC和MTV
- Django--初識
- Django--初識案例
- Django-FBV/CBV
- Django--常用input 交互
- Django-url
- Django-url.py 配置
- Django-include 使用
- Django-url name
- Django-ORM
- ORM-數據庫配置
- ORM-model字段
- ORM-model字段解釋
- ORM-字段選項
- ORM-查詢
- ORM-四種常用查詢方法
- ORM-三種獲取數據
- ORM-其他查詢方式
- ORM-條件查詢雙線
- ORM-Q和F條件使用
- ORM-三種數據庫交互
- 案例 -- 一對多
- ORM-技巧/常見問題
- ORM-N+1 問題
- ORM-并發的處理
- ORM-數量查詢、
- ORM-正向反向查詢
- ORM-基礎案例一
- ORM-基礎一對多案例
- Django-templates
- Django-模板的繼承
- Django-模板的過濾
- Django-自定義模板的過濾
- Django-cookie
- Django-cookies 裝飾器
- Djang-session
- Django-CSRF
- Django-中間件 -- 后續了解
- Django- 緩存 -- 沒有深入了解
- Django-form
- From-ajax
- form-內部驗證處理
- form-屬性
- form-常用的標簽字段
- form-常用的下拉和選擇
- form-widget速查
- Django-ajax序列化
- Django-多種ajax寫法
- ajax-原生寫法
- ajax-$寫法
- ajax-ifram
- Django-ajax圖片上傳
- ajax-原始寫法
- ajax-正常寫法
- iframe+form
- 實戰寫法
- Django-常用自編寫組件
- Django-雙菜單組合搜索
- Django - 多菜單組合搜索
- Django-分頁
- django-綜合基礎
- 綜合基礎-render
- django-admin
- admin-頁面配置
- admin-字段配置
- admin-編輯頁面
- admin-forms驗證
- admin-創建抽象類
- django-驗證碼
- 驗證碼-第三方生成庫
- 驗證碼-view.py使用
- 驗證碼-注意引入Monaco.ttf
- django-用戶注冊
- 注冊-form 模塊
- 注冊-views 模塊
- 注冊-html模塊
- 注冊-model模塊
- django-用戶登錄三種
- session登錄
- form-session 寫法
- view-寫法
- Html-寫法
- model-寫法
- 繼承類登錄
- 外鍵關聯登錄
- django-簡單的student 管理案例
- app-urls.py
- app-models.py配置
- admin-admin.py配置
- app-form.py 和數據庫關聯的寫法
- app-FBV_views.py
- app-CBV_views.py
- templates-index.html
- django-博客系統
- APP目錄-models.py 創建
- APP目錄-基礎展示數據分析
- APP目錄-基礎數據展示cls
- ListView
- DetailView
- FormView
- 額外功能拓建
- 添加文章搜索/用戶文章查詢功能
- 增加一個友情鏈接
- 增加一個評論模塊
- App-利用Bootstrap4 搭建樣式
- 項目crm
- 思維導圖
- perfectCRM-項目名字
- settings.py-配置
- view.py-登陸/登出函數
- crm-app文件
- model.py-表的創建
- admin.py-注冊后臺
- view.py-視圖層
- static-靜態文件
- css
- bootstrap.min.css
- dashboard.css
- ie10-viewport-bug-workaround.css
- signin.css
- fonts
- imgs
- js
- jquery.js
- bootstrap.min.js
- holeder.js
- ie10-viewport-bug-workaround.js
- ie-emulation-modes-warning.js
- plugins
- html模板文件-templates
- crm
- index.html-首頁模板