Добавлен , опубликован

Преамбула

Мотивом для создания этого ресурса послужило несколько моментов:
  • при работе с фреймворком ты, как правило, не контролируешь процесс рендеринга/перерисовки твоего компонента (например, не всегда можешь выбрать между синхронным и асинхронным рендерингом)
  • фреймворки, как правило, не могут в виртуализацию (адекватная производительность требует знания внутренностей, а это то чего обычно делать не хочется)
  • невообразимое количество оберток (коллстек превращается в нечитаемую срань, по крайней мере если не знаком с имплементацией фреймворка, но тут читаем предыдущий пункт)
  • плохая оптимизация, nobrainer-подход, когда вместо task-specific кода используется generic имплементация на +100500 строк

Смысл?

Да вот, подумал а вось кому будет интересно порассуждать об особенностях разработки без фреймворков. Только давайте без копетанства мол это не поможет найти работу и всего в таком духе...
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
21
4 года назад
Отредактирован Raised
0
Думаю чтоб было по-честному, начать стоит мне, пусть и с банальщины.
  • без компонентов не обойтись, по сути это и есть ООП
  • в качестве альтернативы я вижу веб-компоненты
  • компайлинг в статичные файлы в процессе сборки тоже вполне ничего себе подход
  • это лучше для мозгов, меньше магии, больше контроля

архитектура?

Если в случае с фреймворком это просто древо компонентов, то без фреймворков все не настолько очевидно.
2
29
4 года назад
2
Svelte - фреймворк без фреймворка, пишешь компонентны на html + inline css (scss, less) + нативный js (typescript), в итоге все сворачивается в красивый код без лишнего непотребства и оберток. Иногда случаются нюансы, но редко и вполне решаемо.
0
29
4 года назад
0
Что подразумевается под фрэймвоком? Теже jQuery, Bootstrap, smarty очень ускоряют процесс разработки и позволяют контролировать всё что хочется.
0
21
4 года назад
0
NazarPunk, хороший вопрос. Чтоб не начинать об этом думать, я просто отошлюсь к четырем пунктам с преамбулы как определяющим характеристикам.
очень ускоряют процесс разработки
Хоть подходы и разные, по сути все они передают тебе в руки заготовки архитектуры в обмен на те проблемы что я описал. Подумалось знает ли кто какие оптимальные подходы к проектированию веб-апок без фреймворков. Свелт пока упустим, так как это скорее компилятор нежели фреймворк.
1
29
4 года назад
1
Хоть подходы и разные, по сути все они передают тебе в руки заготовки архитектуры в обмен на те проблемы что я описал.
Архитектурой в приведённых мной фрэймворках и не пахнет. Они просто позволяют делать некоторые банальные вещи проще и быстрее.

Я вообще в php херачу всё на классах со статическими методами ибо мне лень писать инклуды или запоминать нэймспэйсы. Архитектурой в этом случаем можно вертеть в любом направлении, а фрэймворки только делают банальные вещи проще.

Дешёвый роутер
index.php
ini_set("display_errors", 1);
error_reporting(E_ALL);

(function () {
	include 'include/config.php';
	include 'include/autoloader.php';
	include 'include/defines.php';
	include 'include/class/vendor/Smarty/Smarty.class.php';

	define('IS_AJAX', false);

	header::cache(false);

	comet::connect();

	try {
		router::route();
	} catch (Throwable $e) {
		http_response_code(404);
		echo '<pre>';
		echo $e->getMessage();
		echo str_repeat(chr(13) . chr(10), 2);
		var_dump($e->getTrace());
		echo '</pre>';
	}
})();
router.php
class router {
	public static function uri() {
		static $out = null;
		if (is_array($out)) return $out;

		$uri = (stripos($_SERVER['REQUEST_URI'], '?')) ? stristr($_SERVER['REQUEST_URI'], '?', true) : $_SERVER['REQUEST_URI'];
		$out = explode('/', substr($uri, 1));

		for ($i = 0; $i <= 10; $i++) {
			$out[$i] = array_key_exists($i, $out) ? trim($out[$i]) : '';
		}

		if (!preg_match('/^[a-z0-9_-]+$/i', $out[0])) $out[0] = 'home';
		return $out;
	}

	public static function route() {
		$uri = self::uri()[0];

		if (in_array($uri, ['signout', 'sign-out', 'logout'])) user::signOut();

		$folder = $uri === 'root' ? '/admin/page' : '';
		$path   = SMARTY_TEMPLATE_DIR . "/page$folder/$uri/$uri.php";

		if (is_readable($path)) {
			include $path;
			return;
		}

		header::noFound(true);
	}
}
0
29
4 года назад
Отредактирован alexprey
0
Свелт пока упустим, так как это скорее компилятор нежели фреймворк.
ну так ты же хотел без фреймворков, вот пожалуйста
NazarPunk:
Теже jQuery
jquery устарел уже в реалиях современных браузеров и просто предоставляет бесполезные обертки над стандартными функциями JS~NazarPunk:
Я вообще в php херачу всё на классах со статическими методами
фуу
не лень писать инклуды или запоминать нэймспэйсы.
Для этого придумали IDE, которая все делает за тебя
0
29
4 года назад
0
jquery устарел уже в реалиях современных браузеров и просто предоставляет бесполезные обертки над стандартными функциями JS
Обёртки над js всёравно нужно писать ибо таже работа с DOM на чистом js то ещё удовольствие, а единый синтаксис для них это удобно. Да и в глобальное пространство имён он вводит всего две переменные, что не мешает писать на чистом js сколько душе угодно. Да и не забывайте, что в ТЗ всегда может быть строчка о поддержке старых браузеров.
фуу
Аргументация уровня бог
Для этого придумали IDE, которая все делает за тебя
Autoloading уже всё сделал за меня, зачем мне ещё в каждом файле протыкивать инклуды?


alexprey, посмотрел я на Svelte и вы ещё ругаете jQuery в лишних обёртках
Притом абсолютно то же самое умеет smarty, притом одни и теже шаблоны он может собирать как на бэке, так и на фронте.
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.