Создать отдельное приложение JS для отдельного сообщения?

Automattic создает тему на основе React.js под названием Picard . Весь код JS находится в picard.js , на котором вы можете увидеть ссылку ниже. Хотя WordPress не имеет «маршрутизатора» как такового ( как описано здесь ), React.js делает и используется в этом приложении для изменения URL-адреса при публикации сообщения.

Мой вопрос: если я хочу создать приложение JS для отображения сообщений (например, в файле posts.js ), как я могу использовать другое приложение JS (например, в файле post.js ) для отображения отдельного сообщения ?

Другими словами, если я не хочу использовать клиентский маршрутизатор, а просто создаю небольшое (и ленивое) приложение JS для отдельного сообщения, а затем, если пользователь нажмет на него, чтобы просмотреть списки сообщений, загружены posts.js .

 function picard_scripts() { wp_enqueue_style( 'picard-style', get_stylesheet_uri(), '20150405' ); wp_register_script( 'picard-script', get_template_directory_uri() . '/picard.js', array(), '20150506', true ); wp_enqueue_script( 'picard-script' ); wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.4' ); } add_action( 'wp_enqueue_scripts', 'picard_scripts' ); 

В случае, если вам интересно, я не хочу использовать клиентский маршрутизатор, потому что я нахожу их багги, но я хочу создать пользовательский интерфейс в JavaScript, поэтому я бы предпочел просто полагаться на WordPress для обработки URL / маршрутизации (хотя WordPress не имеет маршрутизатора).

Я попытаюсь ответить на вопрос, основываясь на моем понимании предоставленной информации.

Я опишу несколько предположений, прежде чем я начну работать по логике:

1) Как и Picard, вы обойдете стандартную иерархию шаблонов WP в пользу падения index.php.

2) Конечные точки будут предоставлены плагином WP REST API.

3) Чтобы максимально упростить тему, мы поместим логику маршрутизации в functions.php.

Отсюда вам нужно решить, будет ли сайт создан как одностраничное асинхронное приложение или стандартный веб-сайт стиля запроса / ответа.

Одностраничное приложение будет в большей степени полагаться на маршрутизацию на передней панели. Вы также можете загружать как posts.js, так и post.js в зависимости от вашей структуры / структуры JS. Ваши URL-адреса будут содержать хеши, а ваш JS будет отображать маршруты к конечным точкам API.

 // basic example - your route patterns may vary http://domain.com/#posts http://domain.com/#post/my-post-slug 

Веб-сайт стандартного стиля позволит PHP обрабатывать маршрутизацию. Ваши URL-адреса будут соответствовать стандартной структуре WP, а functions.php будет размещать ваши JS-библиотеки на основе запроса:

 // very basic routing logic - add any conditions as needed function enqueue_template_scripts() { // load posts.js for blog page if(is_home()) { wp_enqueue_script('post-list', 'posts.js'); } // load post.js for single requests if(is_single()) { wp_enqueue_script('post-single', 'post.js'); } } add_action('wp_enqueue_scripts', 'enqueue_template_scripts'); 

ПРИМЕЧАНИЕ. Другие крючки действий могут работать лучше для вас в зависимости от того, что вы выбираете в своей логике маршрутизации. Я использовал «wp_enqueue_scripts» в этом примере, чтобы продемонстрировать включение скрипта.