Magento2特点

M2有哪些特点

M2是基于zend framework框架的,只不过在它身上加了一层华丽的皮,隐藏了zend framework的底层接口,封装了自己的接口。
所有我们写代码的时候,只需要调用M2自己的类和方法就行。

如果说Linux一切设备皆文件,那么M2一切设计皆XML。
不管是主题还是插件还是API还是数据库 都有XML的身影,正因为它,M2才这么灵活强大!

如下几个特点 算是很牛逼到位之处:

页面xml布局

让你在不动源码的情况下,尽情任意修改页面布局。
每个页面都有唯一的辨识符的xml文件,这个页面的布局都由该xml生成,你可以任意增删改这个xml文件,实现各种效果。
xml文件里放的是各种block,这个block就是每个块,真正输出内容的地方。
以产品详情页为例:

可以看到非常灵活,至于具体怎么增删改,我们在Magento2主题这一章节具体讲解。

数据库EAV结构

E ->实体
A -> 属性
V -> 值

EAV模型是一种数据模型,用于描述实体的数量预计会很大,但事实上,实体中要使用的属性数量并不多。

M2这么设计,其实说白了就是为了灵活性,在不影响主干的基础上,任意新增删除属性。

EAV模型说白了就是分表,不需要把所有字段都放在主表里,而是按类型存放在不同的副表上。
对于字段少的项目来说 EAV其实没啥用 效率不高。

按照常规做法,比如一个产品的所有相关属性都会存放在产品表里,增删改查的都是这一个表。
EAV模式 就是把这些属性按照类型独立分开存放到不同表里的。
所有查询属性值的时候会比较麻烦 要联表查询。

不过M2里不用担心,他提供了非常简单的方法,直接get属性名就得到值了,不需要你手动去写sql查表。

实体存储的是数据类型的信息。
就Magento而言,就是Customer,Category,Product等。

属性是每个实体的单独属性(比如name,weight,email)。

值是实体某个属性的值。

比如,产品有个属性叫产地(Manufacture),它的值为中国。
那么产品就是实体,Manufacture就是属性,中国就是值。

EAV模型带来的好处如下:

  1. 灵活的多功能数据结构(可以在不更改数据库模式的情况下更改属性数量)。
  2. 为给定实体添加新属性时,我们有可能在其他实体中使用它
  3. 快速实施。

EAV实体的数据库模式:

  1. eav_entity - (E)实体表。
  2. eav_entity_attribute(A)属性表
  3. eav_entity_ {type}(V) - 值表。{type} - datetime,decimals,int,text和varchar。
  4. eav_attribute 里面是所有实体的属性

带有eav_ *表格的图表:

Magento 2中有哪些EAV实体:
实体列表可以在eav_entity_type表中找到:

customer
customer_address
catalog_category
catalog_product
order
invoice
creditmemo
shipment

Magento 2中有哪些EAV属性类型:

eav_entity_int
eav_entity_varchar
eav_entity_text
eav_entity_decimal
eav_entity_datetime

这5种属性类型就相当于字段类型。

  • int 对应mysql字段的int类型
  • varchar 对应mysql字段的varchar类型
  • text 对应mysql字段的text类型
  • decimal 对应mysql字段的decimal类型
  • datetime对应mysql字段的datetime类型

比如产品的name 是varchar类型。
他的值存在catalog_product_entity_varchar表里。

知道了这个原理,你就很轻松的知道属性和值在哪个表里。

聪明的你会觉得,把属性分散存在不同的表里,如果要查询全部属性的话,要联十几张表,是不是太耗资源了?
这点,M2官方也考虑到了,以产品为例,他提供了catalog_product_flat表,也就是说后台开启flat模式后,查产品数据就直接读取这个表,他把属性都存放在这个表里了。

catalog_product_flat是按store id来分的。如果你有多网店的话。
比如:

catalog_product_flat_1  //代表store id为1的所有产品数据
catalog_product_flat_2  代表store id为2的所有产品数据

缓存

俗话说东西吃多了就变胖了,胖了就不灵活了,走路都喘气。
M2是个灵活的胖子,他的缓存是其杀手锏。

可以看到,缓存的类型多不胜数,后台轻松设置。
默认是开启了全部缓存类型。

缓存多了 也有很多弊端,就是对开发者不友好,导致开发过程中改了代码后 发现前台页面总是不生效,折腾半天 原来是缓存的问题。

所以我建议是开发版本里禁用所有缓存。 线上版本开启所有缓存。

我们刚开始不需要搞清楚所有缓存类型代表什么意思。等你熟悉一段时间后 再研究会更明白。
以后如果有高级课程的话,我会一个个分析讲解。

模块化

composer是个好东西,希望你会用。

m2的核心代码都是模块化的,可以任意开启禁用。
同理,第三方插件和主题也都是模块化的,可以通过composer来安装升级或者打包上传。
如果你安装了第三方插件或者看M2的核心代码的话,你会发现都有composer.json这个玩意。
这个就是用来安装/打包上传插件的。里面定义了各种依赖库以及插件源地址

安全性

M2的安全性也是其杀手锏,几乎没有被黑过。
社区会每隔1-2个月出安全补丁,自己下载安装就行。
老版本也会出对应的安全补丁。

社区活跃

群里有个小伙子说他经常混https://magento.stackexchange.com
和https://stackoverflow.com/。
几乎能找到任何你遇到的magento问题帖子并解决。

官方社区为https://community.magento.com/
里面也非常活跃,只要你问问题,肯定会得到答案。

所以,有这么多活跃的玩家,这么靠谱的官方,没理由不火,没理由不去用。

 

转发:https://www.kancloud.cn/zouhongzhao/magento2-in-action/628421

转载于:https://my.oschina.net/ganfanghua/blog/2395521

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值