博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NopCommerce 电子商务代码学习(一)
阅读量:5127 次
发布时间:2019-06-13

本文共 3089 字,大约阅读时间需要 10 分钟。

源码下载地址:http://nopchina.net/page/nopcommerce-download.html 

最新版nop3.6,建议大家下载这个,因为学习技术当然学习最新的比较好,NOP的每个新版本都会用上一些新技术,这点也是学习NOP的价值之一。

一  项目框架介绍

这个就是用VS打开的页面了,

nop每次升级都会把package里面的dll升到最新版,所以NOP3.4里面需要.net framework 4.5.1,这个需要先安装上,要不然项目是打不开的, 个人建议直接安装VS2013,方便快捷,因为我发现自己安装了独立的.net framework 4.51发现项目还是打不开,悲剧。

项目打开之后,我们做下整体的分析:上面有四个文件夹

1.Libraries(库)

  Nop.Core项目包含NopCommerce的一系列核心类文件,包含以下内容

      缓存  NOP的缓存机制

 

      组件模型   只有两个文件,一个用来做类型转换的,一个用来锁定访问资源的,还没具体研究,不影响做项目

      配置   

 

      数据  

      表模型    表模型的修改比较常用,数据库里对表数据字段的一些操作都要在这里做相应的操作。

    

     事件

     页面操作重写 这个具体啥用不知道,按照名字猜测应该是对虚假用户访问的一些处理的方法。

     界面帮组类  前端的View的一些帮助方法,比如文本转换成HTML,HTML转换成文本之类的

     框架     域名查找,引擎上下文,计划任务,类查找,NOP引擎,单例模式

     插件方法,以及一些扩展extenstion类。

  Nop.Data项目包含相关和数据操作有关的类,如数据初始化类、数据映射类、还有一些EF的类。Nop提供很好的API可完全定制持久映射。

  Nop.Services故名思意,是业务逻辑层,包含验证。即BAL层

  如果大家刚开始学习NOP,不理解也没关系, 因为我也有很多不理解的,后面我们会详细做讲解,但是不懂这些并不妨碍我们做项目。

2.Plugins(插件)

 

这个Plugins文件夹顾名思义就是插件文件夹,里面存放的是一些NOP使用的插件,其实里面的很多插件我们国内是用不到的,我们只需要熟悉其中一个就可以大致明白它的原理,建议使用支付宝插件,自己做下修改调整就可以了解了,支付宝插件群里有共享,有需要的可以直接下载,这个我的感觉是前期对做项目没有很大的帮助,暂时知道有这么个东西就行了,等后期NOP的代码基本上熟悉了,这个也就没难度了。

3.Presentation(陈述)

Nop.Admin  这个是Nop的后台项目代码,值得一提的是Nop的后台在项目上虽然是分离的,但是运行上却是一起的,我们只要用管理员登陆账号登陆之后,在首页的头顶位置会出现一个administration的链接进入后台,如下图所示。

原理是Nop.Admin的Dll输出路径为..\bin\,而且项目路径为Nop.Web\Administration,也就是说,Nop.Admin的DLL放置在了Nop.Web文件夹的bin文件夹之下,这样在运行的时候它们可以在同一个站点,再加上MVC的Areas(对每个功能模块使用ASP.NET MVC规则的目录结构和命名方法。可以把不同的项目集合进行模块划分,这样可以完整的把项目分离,相互之间不会发生关联,比如我Nop.Web文件夹下有个CustomerControl,在Nop.Admin文件夹下也有个CustomerControl,如果是同一个站点会发生冲突,要不然就得建立两个命名空间,但引入了MVC的Areas则可以解决这个问题,这样各自的项目负责各自的事情,更符合程序开发的高类聚低耦合的思想),两个项目同时运行在一个站点,完全互不影响。

 Nop.Web  这个就是我们的网站运行项目了,把这个设为起始项,运行项目就能跑起来。

 Nop.Web.FrameWork   此项目为Web的框架层,一些控制器的基类、属性类、路由等前端和后端公用的类库都放在该项目下。

4.Tests

这个是Nop的单元测试项目。

 

 二  NOP数据库安装

   介绍了大致的框架内容,我们要做的就是把项目跑起来,设置Nop.Web 为起始项目,然后运行之后的界面如下:

  

NOP的数据库可以使用在线安装的方式,它默认检查你Nop.Web\App_Data\Setting.txt的文本文件,如果这里面有连接数据库的字符,则不会出现这个界面。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//initialize engine context
 
EngineContext.Initialize(
false
);
 
 
//model binders
 
ModelBinders.Binders.Add(
typeof
(BaseNopModel), 
new 
NopModelBinder());
 
//判断数据库是否安装
 
bool 
databaseInstalled = DataSettingsHelper.DatabaseIsInstalled();
 
if 
(databaseInstalled)
 
{
     
//remove all view engines
     
ViewEngines.Engines.Clear();
     
//except the themeable razor view engine we use
     
ViewEngines.Engines.Add(
new 
ThemeableRazorViewEngine());
 
}
复制代码
public partial class DataSettingsHelper    {        private static bool? _databaseIsInstalled;        public static bool DatabaseIsInstalled()        {            if (!_databaseIsInstalled.HasValue)            {                var manager = new DataSettingsManager();                var settings = manager.LoadSettings();                _databaseIsInstalled = settings != null && !String.IsNullOrEmpty(settings.DataConnectionString);            }            return _databaseIsInstalled.Value;        }        public static void ResetCache()        {            _databaseIsInstalled = null;        }    }
复制代码

点击确定之后,会转到InstallController,代码如下

数据填写正确之后,项目就可以正式运行出来,数据来源的原理就是利用appdata里的几个.sql文件。

三  项目发布

     NOP的发布和普通网站的发布类似,不同的一点是需要引用脚本映射

 

这样,一个NOP的站就运行起来了,效果可参考http://demo.nopchina.net/

转载于:https://www.cnblogs.com/iwyc/p/4682312.html

你可能感兴趣的文章
豆瓣,你的前端开发有点幽默了
查看>>
docker日志
查看>>
BZOJ 1057: [ZJOI2007]棋盘制作
查看>>
BZOJ 1070: [SCOI2007]修车
查看>>
asterisk常用调试监测命令
查看>>
一个不错的shell 脚本教程
查看>>
Flutter学习笔记(三)-- 事件交互和State管理
查看>>
iOS开发 之 不要告诉我你真的懂isEqual与hash!
查看>>
基于swift语言iOS8的蓝牙连接(初步)
查看>>
Swift基础--使用TableViewController自定义列表
查看>>
详述iOS国际化
查看>>
Swift - 分段选择控件(UISegmentedControl)的用法
查看>>
android 自定义progressDialog实现
查看>>
java中文乱码解决之道(一)—–认识字符集
查看>>
fzuoj Problem 2177 ytaaa
查看>>
codeforces 682C Alyona and the Tree DFS
查看>>
Vector模板类----构造与析构
查看>>
物联网简介
查看>>
【[ZJOI2010]网络扩容】
查看>>
第二章 掌握C++(1)从结构到类
查看>>