


Manipulating query string to better allow you to share a dynamically charged page
Jan 24, 2025 am 08:28 AMIn-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:
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 endThe
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!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

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

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.

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

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

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.

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

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

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