項目中引用的組件javascript
1.System.Data.SQLite.dll 自行編譯 SQLite-1.0.66.0-source 3.5的框架;F:\Code\開源項目\SQLite\1.0.66.0_x86\源碼\SQLite-1.0.66.0-source\bin【目前已經更新了,不在使用這個了,這個有個bug】
2.F:\Code\開源組件\LitJSON\0.9.0
3.NVelocity.dll 來自小泥鰍blog
******************************************************************************************************************
一些想法html
1.將一個大對象拆開有好處,省得在獲取數據的時候, 查詢過多的數據【好比Product對象】
2.定義一個SQL函數的管理器,管理程序中的SQL語句, select部分,from部分,where部分,條件部分,分組部分,排序部分 【這個想法來自於PetShop】
3.委託功能實現分頁【這個就算了】
4.良好而規範的變量命名,能夠下降註釋的代碼量 同時增長代碼的易讀性java
拆分多個數據庫的想法
Octopus.db 產品分類 品牌 門類
OctopusMember.db 網站會員信息,購物車
OctopusOrders.db 訂單數據庫
OctopusCommon.db 通用配置信息 之類公共廣告信息 靜態代碼 模板管理web
******************************************************************************************************************
需求模塊ajax
1.看我思惟導圖
2.參照開源程序 PetShop,zencart,magento,BalloonShop,opencart,nopCommerce,小泥鰍....
3.ShoppingNetwork
4.在線購物網站 算法
蘭亭
http://www.footlocker.com/
http://www.sierratradingpost.com/site-map/
5.要進行測試每個函數
******************************************************************************************************************數據庫
2.0版本
重大更新
1.實體中VO對象裏面的 業務代碼提取出來 放置到 業務BLL層裏面去json
須要更新
1.加入一個產品關聯的屬性【已經實現】
2.請不要調用產品的圖片信息【沒有初始化】瀏覽器
3.升級先有的數據庫,存儲顧客和訂單的信息 【採用json存儲 由於自己數據量不是很大】
4.升級數據庫 將如今的數據庫進行拆分 用於支持更多的數據庫【已經拆分】
5.關於註冊表單的問題,採用magento的那套表單註冊機制和採用蘭亭集勢的註冊機制【沒有采用】緩存
緣由分析一下:
由於咱們的網站大多數的客戶是屬於一次性交易的客戶,所以開放匿名購買的功能很是的有必要性【實現了】
像蘭亭這樣的大站,他們有固定的用戶羣體,因此每次下單結算的時候必需要登錄網站才能操做,可是咱們的不同的
6.更新分類的調用:指定幾個分類的調用;指定條數的調用【已經實現,尚未使用】
7.分類自定義的樣式屬性,爲分類呈現出特殊的 標識樣式 好比加上Hot 【後期擴展使用】
8.更新產品詳情 展現的 批量折扣的優惠提示信息【後面實現】
9.前臺增長一個訪客的歷史記錄【後面實現】
10.簡單的產品評論
11.優惠的三種方案 優惠碼優惠方案 滿多少金額優惠方案 批量件數的優惠方案
12.產品詳情的展現部分 增長產品的關聯產品 增長產品的搭配產品
13.增長產品屬性 的可輸入屬性
14.增長價格屬性部分 產品屬性影響價格的部分
15.購物車部分的實現 採用數據庫的方式進行實現
16.會員中心
內置幾套固定的模板可供選擇
登錄註冊部分採用ajax的方式實現
會員中心的一部分採用的是Webservice的方式實現
17.增長語言包的緩存功能【已經實現】
後臺管理部分
1.批量修改產品的價格
2.批量增長新的產品
開發採用新的數據Web服務接口
經過一個 簡單的開放API的 東西進行控制
運費和匯率的統一調整服務
要求實現:確保全部的網站的匯率可以獲得統一的更新
運費實現:和各個國家區域相關聯的部分
產品Size
單一的這種
帶有屬性價格的這種
多個Size的這種
帶有顏色圖片的這種
******************************************************************************************************************
1.關於多語言漢化的問題
注意幾個地方:js中使用的固定字符串; title; 標籤中文字; alt;Help連接的名字
建議在最開始的時候 定義一個全局的json對象,用來存儲全部的js中的多語言字符頗有效果,包括cookie的名字
2.關於當前系統中全部的排序:排序數字越大 越靠前 【默認的關係規則】
分類列表讀取時的排序
order by SortOrder asc,CategoryID desc
產品列表讀取時的排序
3.增長link信息表 鏈接管理--主要用於對【幫助,隱私政策鏈接】的實現
4.
增長產品Color顏色屬性,增長產品關聯的算法【需求來自於uggouteltonline.us.com】
更新增長團購的功能,買的更多,將會有更多的優惠【需求來自於zencart 爲產品設置批量優惠】
更新屬性圖片--圖片地址的存儲 ${siteurl}/red.gif; 輸出到前臺的時候將會自動裝換【等待實現】
5.ProductInfo擴展函數的問題
備註:擴展函數能夠提取到 公共實體當中去 EntityInfo
這些函數有 好比建立產品URL的地址格式;建立分類產品的URL地址格式,將這個提取到公共的類裏面
6.是否應該在VO對象中摻雜業務邏輯
是否應該在業務層中來構造VO對象呢? 不在VO對象摻雜複雜的 業務獲取邏輯呢?
******************************************************************************************************************
關於分類
分類是不是虛擬分類
分類下的子分類分類列表
分類的產品列表
分類營銷信息
1.並非全部的字段都是必須的
2.應該將信息進行分類
3.寫一個版本的調用說明書
******************************************************************************************************************
即將要作的事情
1.遷移升級數據庫
2.後臺項目功能的基本需求 簡單爲主 能夠參考小泥鰍的設計思路
3.購物車和會員中心 以及一些小的功能的 東西
4.還有一個東西就是前段的問題
******************************************************************************************************************
基本常識問題
SAVE off 25%意思是指節省25%
就是7.5折的意思
節省百分之二十五
一些經常使用的操做 前臺最好同時使用腳本的方式完成
這些年便於在各個地方調用
******************************************************************************************************************
購物車兩種思路
第一種:在本頁本作提交
第二種:採集腳本的方式
爲網站的表單提交增長一個 安全值
<input type="hidden" name="securityToken" value="94b6f35fd3e84e42c5742a83dab0f235">
經過區分不用的頁面,來實現不一樣頁面,js的加載,區分請求的頁面類型便可【主要指的是head區域】
和上面的一個問題同樣,不一樣頁面的文檔加載完畢以後 執行的函數是不同的 ready函數【是寫在頁面中去?仍是在外置代碼中去呢?】
注意任什麼時候候 都不要在form 標記上添加設置樣式
NV能夠讀取:注意不要 在後面加「--」 不然沒法識別
擴展開啓一個GZIP的壓縮模式【已經獲得支持了】
HttpCustom類優化:
1.不要過多的查詢不少的數據,好比以前想的將購物車的東西加入進去,最好不要這樣作
2.後期優化是要加入 對象緩存的功能
3.用戶緩存的對象 寫入到全局對象中去【還要考慮如何讓業務層使用Cache對象】
購物車必定要實現的是:能夠支持異步調用
注意這個地方:Cache-Control: private
從Cookie中讀取購物車的ID 和 貨幣同樣加入到數據上下文中
能夠經過Cookie的過時時間來實如今關閉瀏覽器以後 能夠繼續存在購物車中 方式設置
兼容jq的寫法
var $a = jQuery.noConflict();
$a(document).ready(function(){
$a('#nav li').hover(
function(){
$a(this).addClass("hover");
},
function(){
$a(this).removeClass("hover");
}
);
$a('#nav ul').each(function(){
$a(this).parent().addClass('items');
});
在訂單模塊 增長一個用戶風險 的字段判斷
檢查密碼的規則:經過規則驗證以後,才能註冊
限制某個IP 某個時間 某個地方的用戶註冊
登錄部分
檢測請求 是否是 人爲操做的 同時防止 機器登錄【注意千軍萬馬】
先進行客戶端的 安全檢測 而後再進行服務端的檢查【用戶Email郵件有效性檢查】
注意優化IOption
注意優化不要在session中存放 過大的對象
js函數分類:全局頁面函數;單個頁面的函數
頁面中帶有明鏈 的一些鏈接 好比 shopping car.ashx等等 能夠參考qblog 中處理的方法 在系統中定義好
要實現URL中 連接 後綴的自定義
思路:將頁面的類進行抽象化的處理
1.分離出抽象了和接口
2.相似aspx 有頁面基類和控件基類 實現各自不一樣的生命週期
3.抽象出公共的代碼:好比模板的實例放在公共類裏面; 公共的接口;繼承以後就會有公共的部分
接下來 拆分數據庫
數據庫的分離這樣來搞:
1 將讀寫的分開了
2. 公共配置的分開
實現對SQLite的版本數據庫的支持
和對URL重寫模塊的實現
關於優惠碼的放置問題
放在購物車的部分?【須要更新數據庫的字段問題】
仍是放在結算的部分?
URL重寫的配置 採用全域名重寫的配置
還有一種思路:子模板的實現
widget
//protected int productID = 0;
//根據產品的ID 得到產品對象屬性
//接下來的這幾個模塊
//購物車模塊
//登錄註冊模塊
//匿名購買功能
//會員中心
//產品評論
//經過POST 提交數據
//提交方式
/*
* submit方式提交
* 經過ajax方式提交
*
* 屬性值無效
* 屬性價格
* 屬性展現的樣式
* select下拉框
* span樣式的單選框 經過隱藏字段獲取值
* 文本框 用於用戶輸入球衣號碼 或者一些其餘信息
*
* 數量
*
* 產品的批量優惠【自動優惠方案設計】
* 批發提交多個產品到購物車
* 經過隱藏字段action的標記 引起不一樣的 代碼
productID = 12;
switch (action)
{
case "add":
productID = 123;
break;
case "remove":
break;
case "update":
break;
case "view":
break;
default:
break;
}*/
使用標準SQL寫法
----------------------------
訂單模塊:
何時生成訂單?
如何防止重複訂單的生成?
匿名用戶的處理
收貨地址的處理
訂單信息:
訂單號 訂單金額 訂單的收貨地址信息 帳單地址信息
注意在添加產品圖片的時候,必定要將產品的主圖和詳細圖 放在產品的Imglist字段中去
#region 備註
//處理分類URL地址格式
//http://localhost:40966/women-s-boots/
//http://www.hermesglobalshop.com/hermes-birkin-c-1.html
//http://localhost:40966/shop-women/c11.html
//http://www.hermesglobalshop.com/hermes-birkin-c-1.html?page=2&sort=20a
//http://localhost:40966/florent-rio-pink-314011.html
//http://localhost:45956/page/3.html
//http://localhost:45956/category/default/page/3.html
//http://www.hermesglobalshop.com/hermes-birkin-bag-30-alezanchestnut-brown-ostrich-skin-gold-har-p-98.html
//分類
//http://www.hermesglobalshop.com/hermes-birkin-c-1.html
//http://www.hermesglobalshop.com/hermes-birkin-c-1/page-1.html
//http://localhost:45956/category/default/page/3.html
//http://official.usahandbagsonline.com/Satchels-c-2/p3.html
//http://official.usahandbagsonline.com/Satchels-c-2.html
//產品
//處理產品URL的地址格式
//http://localhost:40966/florent-rio-pink-314011.html
//http://www.hermesglobalshop.com/hermes-birkin-bag-30-alezanchestnut-brown-ostrich-skin-gold-har-p-98.html
#endregion
爲了簡化製做模板的流程
從購物車的這個地方開始 作分離
CSS 要劃分開
1.購物車模塊
2.登錄註冊模塊
3.支付模塊
4.會員中心模塊
要讓以上幾個地方 實現單獨的獨立 這樣在製做模板的時候 就能夠少作一些頁面
只須要 首頁 分類頁 詳情頁 便可
同時將幫助中心進行 單獨的模塊化
要求目標
1.兼容各個瀏覽器
2.規範化的命名
3.頁面中不要加入過多的CSS樣式代碼
載入說明
先載入樣式,在引入腳本
改進 一些靜態圖片的引入算法
var thempath="";
批量替換這些圖片
防止更改圖片文件夾形成的問題
<img src="images/common/addtocart.jpg" data-theme="img"/>
<script type="text/javascript">
$(document).ready(function () {
var themepath = "themes/fitflops/pc/";
var src = $("img[data-theme='img']").attr("src");
$("img[data-theme='img']").attr("src", themepath + src);
});
</script>
//綁定最新最熱產品
//綁定靜態代碼
//綁定廣告圖片
//應該做爲全局對象進行加載
追加一個測試:測試 一個請求 須要訪問幾回數據庫?
追加一個自定一個 文件緩存功能
//爲何我這個地方一修改 就會更新數據庫呢? 緣由是反序列化 出現異常了
注意追蹤 GetCookie 1193 行 public static string GetCookie(string strName)
URL重寫的關鍵
1.看清楚有哪些請求
2.找出須要重寫的請求
3.到底使用哪個函數進行重寫
4.在衆多的請求中尋找出 咱們須要重寫的URL路徑
兩個點子
自定的HTML應該支持多個 模板才能實現的
後臺判斷登錄的時候,經過islogin 實現【經過前臺的腳本實現】
後臺增長一個日誌的功能:
各自的統計:
好比:
是否開啓URL重寫日誌記錄
是否開啓SQL的日誌分析記錄
是否開啓網站程序失敗的日誌記錄
增長一個 後臺的 「後門程序」-- 重啓網站 防止死鎖使用
不再要使用 自增字段了【經過編碼控制】
經過日誌分析 雙top的分頁算法 升級分頁算法
增長一個註冊js的腳本 用來作前臺的多語言 靜態的輸出 相似於蘭亭的實現 經過ashx 方式響應到前臺
擴展購物車的地方 採用magento的樣式
擴展diag對話框 增長多種皮膚的樣式 研究它的源代碼
還要研究一下其餘的彈出層之類的 仍是比較有用的
還有一些 tab的函數 或者下拉框之類的擴展
後臺登錄經過腳本的方式 處理登錄的問題
forms的身份驗證
不使用session 支持web園 會不會對數據庫形成影響?
數據庫拆分多少合適?
如何解決掉他的併發問題呢?
關於價格的問題 細緻的考量
增長緩存的統一管理
後臺設置貨幣 前臺不能當即生效 並非bug,應爲貨幣在前面作了cookie的緩存設置
內存升的很厲害: 加入緩存中去 使用日誌追蹤函數 追蹤全部的查詢
head部分拆分
公共meta 部分
公共樣式部分
公共腳本部分
<div class="header">
<!--注意編寫規範-->
#parse("pc/template/_header_1.html")
</div>
<div class="nav_container">
#parse("pc/template/_nav_1.html")
</div>
網站初始化包括哪些東西?
前臺和總後臺的交互
剩餘部分
腳本部分
會員中心部分
優惠策略
文件緩存
收藏夾部分
規範化的命名
日誌部分
#region 測試
//測試是否識別字典類型 和 Hashtable
//Dictionary<string, string> option = new Dictionary<string, string>();
//Hashtable option = new Hashtable();
//option.Add("Color", "Black");
//option.Add("Size", "US 10 / UK 14 / EU 40");
//VContent.Put("p", option);
#endregion
WidGetCart
#region 1.0 Reload 暫時取消 效率不是很好
//object obj = VContent.Get(TagFields.RELOAD);
//if (obj == null)
//{
// VContent.Put(TagFields.RELOAD, string.Empty);
//}
#endregion
#region 1.0
//VContent.Put("form", forms);
//關於參數檢查的問題 注意防止惡意請求的出現
//分爲必須參數檢查 和 公共參數檢查 須要編寫一個 頁面助手值了的東西
//把每一個 參數的默認規則寫入進去
#endregion
-- 說明
-- 數據類型的簡單說明
-- 支持五種數據類型
-- 整型 文本型 浮點型 時間類型 約束大小
-- 示例數據
-- name text not null collate nocase
-- phone text not null default 'unknown'
-- 時間 date :current_time current_date current_timestamp
-- 一些說明
-- 1.就是數據庫中不要使用所謂的自增字段
-- 2.對於integer類型,在.net中對應的是Int64,建議在定義的時候使用int類型定義
-- 3.decimal類型也是如此,若是使用real類型,到.net中對應的是double類型的
-- 4.對於字符類型也是如此【這個須要測試】
統一一下幾種類型
1.decimal類型小數位
2.時間類型
3.排序字段
4.開關值 0:false 1:true
5.默認值
導出Excel的組件 記得每次修改以後 將配置文件 複製到bin 目錄中去
SQLite 在插入時間的時候 記得將時間 (「s」) 轉換
若是SQLite在定義時間類型的時候 datetime 是null類型的話,記得將其設置一個默認值 不然的話 讀取是會提示「SQLite 查詢時異常:該字符串未被識別爲有效的 DateTime 錯誤」