国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table of Contents
Website Architecture
Run two Jekyll instances in parallel
URL modification
Run Genomics Daily locally
Home Web Front-end JS Tutorial Manipulating query string to better allow you to share a dynamically charged page

Manipulating query string to better allow you to share a dynamically charged page

Jan 24, 2025 am 08:28 AM

In-depth exploration of Genomics Daily: improved date sharing and localized operation

After recently interacting with Moreno Colaiacovo on Bluesky, I started exploring his Genomics Daily project. This static website based on GitHub Pages, built using Jekyll, and its archive function made me discover a problem: the date of a specific news cannot be directly shared. Therefore, I decided to submit a Pull Request to improve it.

Website Architecture

Genomics Daily is a static website hosted by GitHub Pages, and its code base is located at emmecola.github.io. As a classic GitHub Pages project, it uses Jekyll as a static site generator (SSG).

I discovered that GitHub Pages now supports deployment via GitHub Actions:

Manipulando query string para melhor permitir compartilhar uma página carregada dinamicamente

Run two Jekyll instances in parallel

In order to facilitate local development and debugging, I need to run Genomics Daily and my blog (Computaria) at the same time. Genomics Daily uses port 4000 by default. I solved the port conflict problem by modifying Jekyll's port configuration parameters. This can be achieved by modifying the Jekyll command directly or modifying the Rake task in the Rakefile.

I used a Rake task to manage the running of Jekyll and extracted the port number by matching the task name with a regular expression:

rule(/^run-[0-9]+$/) do |t|
    port = t.name["run-".length() ..]
    run_jekyll port: port
end
The

run_jekyll function receives the port number as a parameter and starts Jekyll:

def run_jekyll(port: nil)
    require "jekyll"
    opts = {
        'show_drafts' => true,
        'watch' => true,
        'serving' => true
    }
    opts['port'] = port unless port.nil?
    conf = Jekyll.configuration(opts)
    Jekyll::Commands::Build.process conf
    Jekyll::Commands::Serve.process conf
end

In this way, you can use rake run (default port) and rake run-4001 (4001 port) to run Jekyll.

Although it is possible to use Rake parameters to pass the port number, for better compatibility, I finally chose to use optional parameters. Similarly, I also modified the rake browser task to accept a port number parameter.

task :run,[:port] do |t, args|
    require "jekyll"
    opts = { ... }
    opts['port'] = args.port unless args.port.nil?
    ...
end

task :browser,[:port] do |t, args|
    port = args.port || 4000
    sh "open ... http://localhost:#{port}/blog/"
end

URL modification

Initially tried to modify location.search to change the URL parameters, but this would affect the dynamic loading mechanism of Genomics Daily. So I used the window.history.pushState API instead to update the URL without refreshing the page.

In the article, I added a button that will increment the value of the URL parameter marmota on each click. The code is as follows:

function alteraQueryParam() {
    const url = new URL(window.location.href);
    if (!window.history) return;
    const paramName = 'marmota';
    let x = url.searchParams.get(paramName) || 0;
    x++;
    url.searchParams.set(paramName, x);
    window.history.pushState(null, '', url.toString());
}

Run Genomics Daily locally

After cloning the Genomics Daily repository, I copied Computaria’s Rakefile. Since Genomics Daily uses the minima theme, I need to add the corresponding gem in Gemfile and execute bundle update to run rake run successfully.

Additionally, I fixed the internal linking issue by changing /genomics-daily/archive/ to a relative path.

Finally, I improved the date selection and page loading logic to ensure that the news content of the corresponding date is loaded according to the URL parameters when the page is loaded. This involves using the window.onload event or document.readyState to determine when the page has finished loading, and dynamically loading content based on the URL parameter date.

In summary, with these improvements, Genomics Daily’s date sharing functionality has been enhanced, and local development and debugging have become more convenient.

The above is the detailed content of Manipulating query string to better allow you to share a dynamically charged page. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

JavaScript vs. Java: Which Language Should You Learn? JavaScript vs. Java: Which Language Should You Learn? Jun 10, 2025 am 12:05 AM

JavaScriptisidealforwebdevelopment,whileJavasuitslarge-scaleapplicationsandAndroiddevelopment.1)JavaScriptexcelsincreatinginteractivewebexperiencesandfull-stackdevelopmentwithNode.js.2)Javaisrobustforenterprisesoftwareandbackendsystems,offeringstrong

Which Comment Symbols to Use in JavaScript: A Clear Explanation Which Comment Symbols to Use in JavaScript: A Clear Explanation Jun 12, 2025 am 10:27 AM

In JavaScript, choosing a single-line comment (//) or a multi-line comment (//) depends on the purpose and project requirements of the comment: 1. Use single-line comments for quick and inline interpretation; 2. Use multi-line comments for detailed documentation; 3. Maintain the consistency of the comment style; 4. Avoid over-annotation; 5. Ensure that the comments are updated synchronously with the code. Choosing the right annotation style can help improve the readability and maintainability of your code.

The Ultimate Guide to JavaScript Comments: Enhance Code Clarity The Ultimate Guide to JavaScript Comments: Enhance Code Clarity Jun 11, 2025 am 12:04 AM

Yes,JavaScriptcommentsarenecessaryandshouldbeusedeffectively.1)Theyguidedevelopersthroughcodelogicandintent,2)arevitalincomplexprojects,and3)shouldenhanceclaritywithoutclutteringthecode.

Javascript Comments: short explanation Javascript Comments: short explanation Jun 19, 2025 am 12:40 AM

JavaScriptcommentsareessentialformaintaining,reading,andguidingcodeexecution.1)Single-linecommentsareusedforquickexplanations.2)Multi-linecommentsexplaincomplexlogicorprovidedetaileddocumentation.3)Inlinecommentsclarifyspecificpartsofcode.Bestpractic

Java vs. JavaScript: Clearing Up the Confusion Java vs. JavaScript: Clearing Up the Confusion Jun 20, 2025 am 12:27 AM

Java and JavaScript are different programming languages, each suitable for different application scenarios. Java is used for large enterprise and mobile application development, while JavaScript is mainly used for web page development.

Mastering JavaScript Comments: A Comprehensive Guide Mastering JavaScript Comments: A Comprehensive Guide Jun 14, 2025 am 12:11 AM

CommentsarecrucialinJavaScriptformaintainingclarityandfosteringcollaboration.1)Theyhelpindebugging,onboarding,andunderstandingcodeevolution.2)Usesingle-linecommentsforquickexplanationsandmulti-linecommentsfordetaileddescriptions.3)Bestpracticesinclud

JavaScript Data Types: A Deep Dive JavaScript Data Types: A Deep Dive Jun 13, 2025 am 12:10 AM

JavaScripthasseveralprimitivedatatypes:Number,String,Boolean,Undefined,Null,Symbol,andBigInt,andnon-primitivetypeslikeObjectandArray.Understandingtheseiscrucialforwritingefficient,bug-freecode:1)Numberusesa64-bitformat,leadingtofloating-pointissuesli

JavaScript vs. Java: A Comprehensive Comparison for Developers JavaScript vs. Java: A Comprehensive Comparison for Developers Jun 20, 2025 am 12:21 AM

JavaScriptispreferredforwebdevelopment,whileJavaisbetterforlarge-scalebackendsystemsandAndroidapps.1)JavaScriptexcelsincreatinginteractivewebexperienceswithitsdynamicnatureandDOMmanipulation.2)Javaoffersstrongtypingandobject-orientedfeatures,idealfor

See all articles