forked from sheetjs/docs.sheetjs.com
		
	Nuxt Content Static demo refresh
This commit is contained in:
		
							parent
							
								
									298297642d
								
							
						
					
					
						commit
						5f443931f8
					
				| @ -48,8 +48,8 @@ This demo was tested in the following environments: | ||||
| 
 | ||||
| | Nuxt Content | Nuxt     | Date       | | ||||
| |:-------------|:---------|:-----------| | ||||
| | `1.15.1`     | `2.17.2` | 2023-12-04 | | ||||
| | `2.9.0`      | `3.8.2`  | 2023-12-04 | | ||||
| | `1.15.1`     | `2.17.3` | 2024-06-04 | | ||||
| | `2.12.1`     | `3.11.2` | 2024-06-04 | | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| @ -61,7 +61,7 @@ Nuxt embeds telemetry. According to the docs, it can be disabled with: | ||||
| npx nuxt telemetry disable | ||||
| ``` | ||||
| 
 | ||||
| **At the time the demo was last tested, this command did not work.** | ||||
| **When the demo was last tested, this command did not work.** | ||||
| 
 | ||||
| Disabling telemetry requires a few steps: | ||||
| 
 | ||||
| @ -100,6 +100,14 @@ Click "OK" in each window (3 windows) and restart your computer. | ||||
| telemetry.enabled=false | ||||
| ``` | ||||
| 
 | ||||
| The following command can be run in the Linux / MacOS terminal: | ||||
| 
 | ||||
| ```bash | ||||
| cat >~/.nuxtrc <<EOF | ||||
| telemetry.enabled=false | ||||
| EOF | ||||
| ``` | ||||
| 
 | ||||
| 3) For Nuxt 3 sites, set the `telemetry` option in the Nuxt config file (either `nuxt.config.ts` or `nuxt.config.js`): | ||||
| 
 | ||||
| ```js title="nuxt.config.js" | ||||
| @ -265,18 +273,18 @@ npx create-nuxt-app@4.0.0 sheetjs-nuxt | ||||
| 
 | ||||
| When prompted, enter the following options: | ||||
| 
 | ||||
| - `Project name`: press Enter (use default `sheetjs-nuxt`) | ||||
| - `Programming language`: press Down Arrow (`TypeScript` selected) then Enter | ||||
| - `Package manager`: select `Npm` and press Enter | ||||
| - `UI framework`: select `None` and press Enter | ||||
| - `Nuxt.js modules`: scroll to `Content`, select with Space, then press Enter | ||||
| - `Linting tools`: press Enter (do not select any Linting tools) | ||||
| - `Testing framework`: select `None` and press Enter | ||||
| - `Rendering mode`: select `Universal (SSR / SSG)` and press Enter | ||||
| - `Deployment target`: select `Static (Static/Jamstack hosting)` and press Enter | ||||
| - `Development tools`: press Enter (do not select any Development tools) | ||||
| - `What is your GitHub username?`: press Enter | ||||
| - `Version control system`: select `None` | ||||
| - `Project name`: press <kbd>Enter</kbd> (use default `sheetjs-nuxt`) | ||||
| - `Programming language`: press <kbd>↓</kbd> (`TypeScript` selected) then <kbd>Enter</kbd> | ||||
| - `Package manager`: select `Npm` and press <kbd>Enter</kbd> | ||||
| - `UI framework`: select `None` and press <kbd>Enter</kbd> | ||||
| - `Nuxt.js modules`: scroll to `Content`, select with <kbd>Space</kbd>, then press <kbd>Enter</kbd> | ||||
| - `Linting tools`: press <kbd>Enter</kbd> (do not select any Linting tools) | ||||
| - `Testing framework`: select `None` and press <kbd>Enter</kbd> | ||||
| - `Rendering mode`: select `Universal (SSR / SSG)` and press <kbd>Enter</kbd> | ||||
| - `Deployment target`: select `Static (Static/Jamstack hosting)` and press <kbd>Enter</kbd> | ||||
| - `Development tools`: press <kbd>Enter</kbd> (do not select any Development tools) | ||||
| - `What is your GitHub username?`: press <kbd>Enter</kbd> (use default) | ||||
| - `Version control system`: select `None` and press <kbd>Enter</kbd> | ||||
| 
 | ||||
| The project will be configured and modules will be installed. | ||||
| 
 | ||||
| @ -306,7 +314,7 @@ curl -L -o content/pres.xlsx https://docs.sheetjs.com/pres.xlsx | ||||
| 
 | ||||
| - Add the following to the top of the script: | ||||
| 
 | ||||
| ```js | ||||
| ```js title="nuxt.config.js (add to top)" | ||||
| import { readFile, utils } from 'xlsx'; | ||||
| 
 | ||||
| // This will be called when the files change | ||||
| @ -327,7 +335,7 @@ const parseSheet = (file, { path }) => { | ||||
| 
 | ||||
| Replace the property with the following definition: | ||||
| 
 | ||||
| ```js | ||||
| ```js title="nuxt.config.js (replace content key in object)" | ||||
|   // content.extendParser allows us to hook into the parsing step | ||||
|   content: { | ||||
|     extendParser: { | ||||
| @ -399,15 +407,23 @@ The page should automatically refresh with the new content: | ||||
| npm run generate | ||||
| ``` | ||||
| 
 | ||||
| This will create a static site in the `dist` folder, which can be served with: | ||||
| This will create a static site in the `dist` folder. | ||||
| 
 | ||||
| 9) Serve the static site: | ||||
| 
 | ||||
| ```bash | ||||
| npx http-server dist | ||||
| ``` | ||||
| 
 | ||||
| Accessing the page `http://localhost:8080` will show the page contents. Verifying | ||||
| the static nature is trivial: make another change in Excel and save.  The page | ||||
| will not change. | ||||
| Access the displayed URL (typically `http://localhost:8080`) in a web browser. | ||||
| 
 | ||||
| To confirm that the spreadsheet data is added to the site, view the page source. | ||||
| 
 | ||||
| Searching for `Bill Clinton` reveals the following encoded HTML row: | ||||
| 
 | ||||
| ```html | ||||
| <tr><td>Bill Clinton</td> <td>42</td></tr> | ||||
| ``` | ||||
| 
 | ||||
| ## Nuxt Content v2 | ||||
| 
 | ||||
| @ -593,7 +609,7 @@ The recommended solution is to switch to Node 18. | ||||
| 1) Create a stock app and install dependencies: | ||||
| 
 | ||||
| ```bash | ||||
| npx -y nuxi init -t content sheetjs-nc2 | ||||
| npx -y nuxi init -t content --packageManager yarn --no-gitInit sheetjs-nc2 | ||||
| cd sheetjs-nc2 | ||||
| npx -y yarn install | ||||
| npx -y yarn add --dev @types/node | ||||
| @ -653,7 +669,7 @@ export default defineNuxtConfig({ | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| Restart the dev server by exiting the process (Control+C) and running: | ||||
| Stop the dev server (<kbd>CTRL</kbd>+<kbd>C</kbd>) and run the following: | ||||
| 
 | ||||
| ```bash | ||||
| npx -y nuxi clean | ||||
| @ -686,7 +702,8 @@ Loading `http://localhost:3000/pres` should show some JSON data: | ||||
| ```bash | ||||
| curl -o pages/pres.vue https://docs.sheetjs.com/nuxt/3/pres.vue | ||||
| ``` | ||||
| Restart the dev server by exiting the process (Control+C) and running: | ||||
| 
 | ||||
| Stop the dev server (<kbd>CTRL</kbd>+<kbd>C</kbd>) and run the following: | ||||
| 
 | ||||
| ```bash | ||||
| npx -y nuxi clean | ||||
| @ -697,7 +714,7 @@ npx -y yarn run dev | ||||
| The browser should now display an HTML table. | ||||
| 
 | ||||
| 6) To verify that hot loading works, open `pres.xlsx` from the `content` folder | ||||
| with Excel or another spreadsheet editor. | ||||
| with a spreadsheet editor. | ||||
| 
 | ||||
| Set cell `A7` to "SheetJS Dev" and set `B7` to `47`. Save the spreadsheet. | ||||
| 
 | ||||
| @ -717,9 +734,15 @@ This will create a static site in `.output/public`, which can be served with: | ||||
| npx -y http-server .output/public | ||||
| ``` | ||||
| 
 | ||||
| Accessing `http://localhost:8080/pres` will show the page contents. Verifying | ||||
| the static nature is trivial: make another change in Excel and save.  The page | ||||
| will not change. | ||||
| Access the displayed URL (typically `http://localhost:8080`) in a web browser. | ||||
| 
 | ||||
| To confirm that the spreadsheet data is added to the site, view the page source. | ||||
| 
 | ||||
| Searching for `Bill Clinton` reveals the following encoded HTML row: | ||||
| 
 | ||||
| ```html | ||||
| <tr><td>Bill Clinton</td><td>42</td></tr> | ||||
| ``` | ||||
| 
 | ||||
| [^1]: See [`readFile` in "Reading Files"](/docs/api/parse-options) | ||||
| [^2]: See [`sheet_to_json` in "Utilities"](/docs/api/utilities/array#array-output) | ||||
|  | ||||
| @ -490,6 +490,6 @@ When prompted to select a target device, select the real device in the list. | ||||
| [^1]: See [`read` in "Reading Files"](/docs/api/parse-options) | ||||
| [^2]: See [`sheet_to_html` in "Utilities"](/docs/api/utilities/html#html-table-output) | ||||
| [^3]: See ["Workbook Object"](/docs/csf/book) | ||||
| [^4]: See [the "base64" type in "Writing Files"](/docs/api/write-options#input-type) | ||||
| [^4]: See [the "base64" type in "Writing Files"](/docs/api/write-options#output-type) | ||||
| [^5]: See [`table_to_book` in "HTML" Utilities](/docs/api/utilities/html#create-new-sheet) | ||||
| [^6]: See ["Environment Setup"](https://capacitorjs.com/docs/getting-started/environment-setup) in the CapacitorJS documentation. | ||||
| @ -9,12 +9,29 @@ import CodeBlock from '@theme/CodeBlock'; | ||||
| 
 | ||||
| ExecJS is a Ruby abstraction over a number of JS runtimes including V8. | ||||
| 
 | ||||
| The [SheetJS Standalone scripts](/docs/getting-started/installation/standalone) | ||||
| can be parsed and evaluated in every supported runtime. | ||||
| [SheetJS](https://sheetjs.com) is a JavaScript library for reading and writing | ||||
| data from spreadsheets. | ||||
| 
 | ||||
| This demo uses ExecJS and SheetJS to pull data from sheets and print CSV rows. | ||||
| We'll explore how to load SheetJS in ExecJS contexts and process data in Ruby. | ||||
| 
 | ||||
| The ["Complete Example"](#complete-example) section includes a complete Ruby | ||||
| script for reading data from files. | ||||
| 
 | ||||
| ## Integration Details | ||||
| 
 | ||||
| _Load SheetJS Scripts_ | ||||
| The [SheetJS Standalone scripts](/docs/getting-started/installation/standalone) | ||||
| can be parsed and evaluated in every supported runtime. | ||||
| 
 | ||||
| ### Initialize ExecJS | ||||
| 
 | ||||
| The `require` command performs the required initialization steps: | ||||
| 
 | ||||
| ```rb | ||||
| require "execjs" | ||||
| ``` | ||||
| 
 | ||||
| ### Load SheetJS Scripts | ||||
| 
 | ||||
| The main library can be loaded and compiled in a new context: | ||||
| 
 | ||||
| @ -32,7 +49,7 @@ To confirm the library is loaded, `XLSX.version` can be inspected: | ||||
| puts context.eval("XLSX.version"); | ||||
| ``` | ||||
| 
 | ||||
| _Reading and Writing Files_ | ||||
| ### Reading and Writing Files | ||||
| 
 | ||||
| The architecture of ExecJS forces users to combine reading and writing in one | ||||
| function step.  Base64 strings should be used for interchange.  For example, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user