Inhaltsverzeichnis
Yii核心组件AssetManager原理分析,yiiassetmanager
Heim Backend-Entwicklung PHP-Tutorial Yii核心组件AssetManager原理分析,yiiassetmanager_PHP教程

Yii核心组件AssetManager原理分析,yiiassetmanager_PHP教程

Jul 13, 2016 am 10:12 AM
yii 分析

Yii核心组件AssetManager原理分析,yiiassetmanager

本文我们通过yii自带的demo-blog程序来分析Yii核心组件AssetManager,他可以自动加载css和javascript,并且只需要一句代码即可。具体分析如下:

打开blog的首页,会看到如下的引入js的html代码:

复制代码 代码如下:



这些js文件的路径都在assets文件夹下,assets后面跟着一个显然经过hash的文件夹路径,同属于jq的js代码的路径相同,这段代码从何而来呢?

直接看view文件看不到任何引入js的代码,因此应该是使用widget引入的:

复制代码 代码如下:
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
'template'=>"{items}n{pager}",
));
?>

这个widget也是yii自带的zii扩展,于是乎我们可以找到zii的CListView代码,而CListView又是继承CBaseListView,因此先看CBaseListView的run方法:

复制代码 代码如下:
public function run()
{
$this->registerClientScript();
echo CHtml::openTag($this->tagName,$this->htmlOptions)."n";
$this->renderKeys();
$this->renderContent();
echo CHtml::closeTag($this->tagName);
}

请注意第一个方法registerClientScript,这个方法是在CListView中实现的:

复制代码 代码如下:
public function registerClientScript()
{
……
$cs=Yii::app()->getClientScript();
$cs->registerCoreScript('jquery');
$cs->registerCoreScript('bbq');
……
}

看到jquery和bbp似乎离真相近了些,接下来我们看CClientScript::registerCoreScript方法:

复制代码 代码如下:
public function registerCoreScript($name)
{
$this->_hasScripts=true;
$this->_coreScripts[$name]=$name;
$params=func_get_args();
$this->recordCachingAction('clientScript','registerCoreScript',$params);
}

这里其实主要是记录了最终页面要render的js,而实际生成render的url是通过getCoreScriptUrl方法:

复制代码 代码如下:
public function getCoreScriptUrl()
{
if($this->_baseUrl!==null)
return $this->_baseUrl;
else
return $this->_baseUrl=Yii::app()->getAssetManager()->publish(YII_PATH.'/web/js/source');
}

接下来我们看看publish的具体过程:

复制代码 代码如下:
public function publish($path,$hashByName=false,$level=-1,$forceCopy=false)
{
if(is_file($src))
{
$dir=$this->hash($hashByName ? basename($src) : dirname($src));
$fileName=basename($src);
……
else if(is_dir($src))
{
$dir=$this->hash($hashByName ? basename($src) : $src);
$dstDir=$this->getBasePath().DIRECTORY_SEPARATOR.$dir;
……
}

这里通过对路径做了hash处理,因此我们看到的路径是不规则的,而由于jq系列的js代码均在同一路径下(都在framework/web/js/source下),所以hash值是相同的。

另外,除了如上所述,CAssetManager使得多个模块可以复用相同的代码制外,使用CAssetManager的另外一个好处是安全隔离,将真实的代码放在受保护的路径下,按需加载。

希望本文所述对大家基于yii框架的PHP程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/920610.htmlTechArticleYii核心组件AssetManager原理分析,yiiassetmanager 本文我们通过yii自带的demo-blog程序来分析Yii核心组件AssetManager,他可以自动加载css和javascript,...
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So implementieren Sie Datenstatistiken und -analysen in Uniapp So implementieren Sie Datenstatistiken und -analysen in Uniapp Oct 24, 2023 pm 12:37 PM

So implementieren Sie Datenstatistiken und -analysen in uniapp 1. Hintergrundeinführung Datenstatistiken und -analysen sind ein sehr wichtiger Teil des Entwicklungsprozesses für mobile Anwendungen. Durch Statistiken und Analysen des Benutzerverhaltens können Entwickler ein tiefgreifendes Verständnis der Benutzerpräferenzen und -nutzung erlangen Gewohnheiten. Dadurch werden Produktdesign und Benutzererfahrung optimiert. In diesem Artikel wird die Implementierung von Datenstatistiken und Analysefunktionen in uniapp vorgestellt und einige spezifische Codebeispiele bereitgestellt. 2. Wählen Sie geeignete Datenstatistik- und Analysetools. Der erste Schritt zur Implementierung von Datenstatistiken und -analysen in uniapp besteht darin, die geeigneten Datenstatistik- und Analysetools auszuwählen.

Wie verwende ich die MySQL-Datenbank für Prognosen und prädiktive Analysen? Wie verwende ich die MySQL-Datenbank für Prognosen und prädiktive Analysen? Jul 12, 2023 pm 08:43 PM

Wie verwende ich die MySQL-Datenbank für Prognosen und prädiktive Analysen? Überblick: Prognosen und prädiktive Analysen spielen eine wichtige Rolle in der Datenanalyse. MySQL, ein weit verbreitetes relationales Datenbankverwaltungssystem, kann auch für Vorhersage- und prädiktive Analyseaufgaben verwendet werden. In diesem Artikel wird die Verwendung von MySQL für Vorhersagen und Vorhersageanalysen vorgestellt und relevante Codebeispiele bereitgestellt. Datenaufbereitung: Zunächst müssen wir relevante Daten aufbereiten. Angenommen, wir möchten Verkaufsprognosen erstellen, benötigen wir eine Tabelle mit Verkaufsdaten. In MySQL können wir verwenden

Protokollüberwachung und -analyse in Echtzeit unter Linux Protokollüberwachung und -analyse in Echtzeit unter Linux Jul 29, 2023 am 08:06 AM

Protokollüberwachung und -analyse in Echtzeit unter Linux Bei der täglichen Systemverwaltung und Fehlerbehebung sind Protokolle eine sehr wichtige Datenquelle. Durch Echtzeitüberwachung und Analyse von Systemprotokollen können wir ungewöhnliche Situationen rechtzeitig erkennen und entsprechend damit umgehen. In diesem Artikel wird die Durchführung einer Protokollüberwachung und -analyse in Echtzeit unter Linux vorgestellt und entsprechende Codebeispiele bereitgestellt. 1. Protokollüberwachung in Echtzeit Unter Linux ist rsyslog das am häufigsten verwendete Protokollsystem. Durch die Konfiguration von rsyslog können wir die Protokolle verschiedener Anwendungen kombinieren

Analyse der Gründe, warum das sekundäre Verzeichnis von DreamWeaver CMS nicht geöffnet werden kann Analyse der Gründe, warum das sekundäre Verzeichnis von DreamWeaver CMS nicht geöffnet werden kann Mar 13, 2024 pm 06:24 PM

Titel: Analyse der Gründe und Lösungen, warum das sekundäre Verzeichnis von DreamWeaver CMS nicht geöffnet werden kann. Dreamweaver CMS (DedeCMS) ist ein leistungsstarkes Open-Source-Content-Management-System, das häufig bei der Erstellung verschiedener Websites verwendet wird. Allerdings kann es beim Erstellen einer Website manchmal vorkommen, dass das sekundäre Verzeichnis nicht geöffnet werden kann, was zu Problemen beim normalen Betrieb der Website führt. In diesem Artikel analysieren wir die möglichen Gründe, warum das sekundäre Verzeichnis nicht geöffnet werden kann, und stellen spezifische Codebeispiele zur Lösung dieses Problems bereit. 1. Mögliche Ursachenanalyse: Pseudostatisches Regelkonfigurationsproblem: während der Verwendung

ThinkPHP6-Code-Leistungsanalyse: Leistungsengpässe lokalisieren ThinkPHP6-Code-Leistungsanalyse: Leistungsengpässe lokalisieren Aug 27, 2023 pm 01:36 PM

ThinkPHP6-Code-Leistungsanalyse: Leistungsengpässe lokalisieren Einführung: Mit der rasanten Entwicklung des Internets ist eine effizientere Code-Leistungsanalyse für Entwickler immer wichtiger geworden. In diesem Artikel wird erläutert, wie Sie mit ThinkPHP6 eine Code-Leistungsanalyse durchführen, um Leistungsengpässe zu lokalisieren und zu beheben. Gleichzeitig werden wir auch Codebeispiele verwenden, um den Lesern ein besseres Verständnis zu ermöglichen. Bedeutung der Leistungsanalyse Die Code-Leistungsanalyse ist ein integraler Bestandteil des Entwicklungsprozesses. Durch die Analyse der Leistung des Codes können wir verstehen, wo viele Ressourcen verbraucht werden

Leistungsanalyse und Optimierungsstrategie des TP6 Think-Swoole RPC-Dienstes Leistungsanalyse und Optimierungsstrategie des TP6 Think-Swoole RPC-Dienstes Oct 12, 2023 am 10:34 AM

Leistungsanalyse und Optimierungsstrategien des TP6Think-SwooleRPC-Dienstes Zusammenfassung: Dieser Artikel analysiert hauptsächlich die Leistung der TP6- und Think-SwooleRPC-Dienste und schlägt einige Optimierungsstrategien vor. Zunächst wurden die Reaktionszeit, Parallelität und der Durchsatz des RPC-Dienstes durch Leistungstests bewertet. Anschließend werden entsprechende Lösungen und Praktiken aus zwei Aspekten vorgeschlagen: serverseitige Leistungsoptimierung und clientseitige Leistungsoptimierung, einschließlich Codebeispielen. Schlüsselwörter: TP6, Think-Swoole, R

Analysieren Sie, ob die Hauptprogrammiersprache von Tencent Go ist Analysieren Sie, ob die Hauptprogrammiersprache von Tencent Go ist Mar 27, 2024 pm 04:21 PM

Titel: Ist Tencents wichtigste Programmiersprache Go: Eine eingehende Analyse Als Chinas führendes Technologieunternehmen hat Tencent bei der Auswahl seiner Programmiersprachen schon immer große Aufmerksamkeit auf sich gezogen. In den letzten Jahren glauben einige Leute, dass Tencent hauptsächlich Go als Hauptprogrammiersprache übernommen hat. In diesem Artikel wird eine eingehende Analyse durchgeführt, ob die Hauptprogrammiersprache von Tencent Go ist, und es werden konkrete Codebeispiele angegeben, um diese Ansicht zu untermauern. 1. Anwendung der Go-Sprache in Tencent Go ist eine von Google entwickelte Open-Source-Programmiersprache. Viele Entwickler schätzen ihre Effizienz, Parallelität und Einfachheit.

Analysieren Sie die Vor- und Nachteile der statischen Positionierungstechnologie Analysieren Sie die Vor- und Nachteile der statischen Positionierungstechnologie Jan 18, 2024 am 11:16 AM

Analyse der Vorteile und Grenzen der statischen Positionierungstechnologie Mit der Entwicklung moderner Wissenschaft und Technologie ist die Positionierungstechnologie zu einem unverzichtbaren Bestandteil unseres Lebens geworden. Als eine davon hat die statische Positionierungstechnologie ihre einzigartigen Vorteile und Grenzen. In diesem Artikel wird eine eingehende Analyse der statischen Positionierungstechnologie durchgeführt, um ihren aktuellen Anwendungsstatus und zukünftige Entwicklungstrends besser zu verstehen. Werfen wir zunächst einen Blick auf die Vorteile der statischen Positionierungstechnologie. Die statische Positionierungstechnologie erreicht die Bestimmung von Positionsinformationen durch Beobachtung, Messung und Berechnung des zu positionierenden Objekts. Im Vergleich zu anderen Positionierungstechnologien

See all articles