Giter Club home page Giter Club logo

composercomponents's Introduction

Nette composer components installer

Podpora instalace komponent - JS, CSS a obrázků pomocí composeru. Princip je triviální - komponenta je závislá na generovaném souboru composer.lock, který vždy projde při změně a podívá se po definici extra.component viz příklad níže (syntaxe je inspirovaná komplexnějším systémem Bower, pouze ho velice zjednodušuje a funguje jako triviální náhrada).

Všechny soubory komponent zkopíruje do definované složky (defaultně www/components). Dále definované soubory CSS, JS lze přes nette komponentu ComposerComponents/Control/Control vygenerovat v HTML šabloně.

Příklad rozšíření v composer

Podstatná je pouze ta část extra.component, zde je možné definovat základní složku src. Dále je zde možné definovat JavaScript soubory v scripts, poté CSS soubory vně styles, a dále související soubory, například obrázkyve files.

{
	"name": "frosty22/xxx",
	"type": "library",
	"require": {
		"php": ">= 5.3.0",
		"nette/nette": "2.*"
	},
	"autoload": {
		"psr-0": {
			"XXX" : "src/"
		}
	},
	"extra": {
		"component" : {
			"src" : "src/",
			"scripts" : [
					"js/test1.js",
					"js/test2.js"
			],
			"styles" : [
					"css/test1.css",
					"css/test2.css"
			],
			"files" : [
					"img/*"
			]
		}
	}
}

Příklad definice komponenty

class BasePresenter extends Nette\UI\Presenter {

	/** @var \ComposerComponents\Control\Control $componentsControl */
	protected $componentsControl;

	/** @param \ComposerComponents\Control\Control $componentsControl */
	public function injectComponentsControl(\ComposerComponents\Control\Control $componentsControl)
	{
		$this->componentsControl = $componentsControl;
	}

	/** @return \ComposerComponents\Control\Control */
	protected function createComponentComponents($name)
	{
		return $this->componentsControl;
	}

}

Příklad v šabloně

<html>
	<head>
		{control components}
	</head>
	<body>
		...
	</body>
</html>

Vykreslí podle příkladu výše:

<html>
	<head>
		<link rel="stylesheet" type="text/css" href="/components/test1.css?1380013683" />
		<link rel="stylesheet" type="text/css" href="/components/test2.css?1380013683" />

		<script type="text/javascript" src="/components/test1.js?1380013683"></script>
		<script type="text/javascript" src="/components/test2.js?1380013683"></script>
	</head>
	<body>
		...
	</body>
</html>

Vykreslení odděleně

<html>
	<head>
		{control components:css}
	</head>
	<body>
		...
		{control components:js}
	</body>
</html>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.