为什么使用 Widget 而不是 HTML?
我在使用 Yii 框架进行开发时注意到
许多基本 HTML 元素的函数(CHtml 有按钮、链接等) 以及菜单(可以轻松地用列表替换)。 我的问题是,尽可能使用小部件是否被认为是理想的? 我什么时候应该使用 HTML ?
I've noticed in my development with the Yii framework that there's
a function for many basic HTML elements (CHtml has button, link, etc.)
as well as for a menu (that could easily be replaced with a list).
My question is it considered ideal to use widgets wherever I can ?
When should I use HTML ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用小部件的最大优点之一是可以自动生成
HTML
代码,这意味着用更少的代码获得更多的代码/功能。例如,在
Yii
中,您有WidgetFactory
(在 config/main 中),您可以在其中指定所有小部件的默认属性。更改出厂默认设置会更改您的整个应用程序/网站小部件。
这样,您只需处理一些可能需要调整小部件行为的特定视图。
您还可以修改
Widget
代码以适应HTML
/js
代码生成以满足您的需求。One of the biggest advantages of using widgets is that you automate the
HTML
code generation, and this means more code/functionality with less coding.For example, in
Yii
you have theWidgetFactory
(in the config/main) where you can specify the default attributes for all your widgets.Changing the factory defaults changes your whole app/site widgets.
This way, you only deal with some specific view where you may need to adapt your widget behavior.
You may also hack the
Widget
code to adapt theHTML
/js
code generation to fit your needs.有时,框架用自己的小部件替换基本的 HTML。
对于链接小部件,框架可能会执行其他操作,例如如果链接指向当前页面,则自动为其赋予
class="active"
,以便可以采用不同的样式。Sometimes, frameworks replace basic HTML with their own widgets.
In the case of a link widget, the framework might do additional stuff like automatically giving it
class="active"
if the link is to the current page, so it can be styled differently.小部件是 HTML 等价物的简洁包装。 Yii 中的小部件通常还会加载所需的 JavaScript 库。例如,Yii 中的 CMaskedTextField 包含一个 jQuery 屏蔽输入插件,它将与小部件一起加载。编写相同的 HTML/JavaScript 等效代码将需要更多行代码。
Widgets are neat wrappers to their HTML equivalents. Widgets in Yii typically also load the required JavaScript libraries. For example the CMaskedTextField in Yii contains a jQuery masked input plugin which it will load together with the widget. Coding the same HTML/JavaScript equivalent will require more lines of code.