mirror of https://github.com/yewstack/yew
Update benchmark crates and workflow (#3027)
* update benchmark crates and workflow * default to the merge commit for benchmarking * setup framework benchmark early, after the caches this doesn't restore the comments on PRs; benchmark-action/github-action-benchmark has open issues about it
This commit is contained in:
parent
8b2a1c199a
commit
698bd56e61
|
@ -18,52 +18,19 @@ permissions:
|
|||
contents: write
|
||||
|
||||
jobs:
|
||||
results:
|
||||
runs-on: ubuntu-latest
|
||||
needs: benchmark
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- run: |
|
||||
touch results.json
|
||||
echo '${{ needs.benchmark.outputs.results }}' >> results.json
|
||||
|
||||
# gh-pages branch is updated and pushed automatically with extracted benchmark data
|
||||
- name: Store benchmark result
|
||||
uses: benchmark-action/github-action-benchmark@v1
|
||||
# This needs access to secersts so only run it on push to master
|
||||
if: github.event_name == 'push'
|
||||
with:
|
||||
name: "Yew master branch benchmarks (Lower is better)"
|
||||
tool: "customSmallerIsBetter"
|
||||
output-file-path: results.json
|
||||
gh-pages-branch: "gh-pages"
|
||||
# Access token to deploy GitHub Pages branch
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
# Push and deploy GitHub pages branch automatically
|
||||
alert-threshold: "200%"
|
||||
alert-comment-cc-users: "@yewstack/yew"
|
||||
auto-push: true
|
||||
save-data-file: true
|
||||
|
||||
benchmark:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
results: ${{ steps.results.outputs.stdout }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
path: "./yew"
|
||||
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
||||
ref: "${{ github.head_ref }}"
|
||||
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
repository: krausest/js-framework-benchmark
|
||||
path: "./js-framework-benchmark"
|
||||
ref: 678cd09a8e02b9a01bcb9b71dc9248d17a33ff82
|
||||
ref: 3e0fff7973417acd8b00c2fc3e94a01dfa6f3438
|
||||
|
||||
- name: Setup toolchain
|
||||
uses: dtolnay/rust-toolchain@master
|
||||
|
@ -92,161 +59,64 @@ jobs:
|
|||
${{ runner.os }}-benchmark-
|
||||
${{ runner.os }}
|
||||
|
||||
# Optimisation flags has no effect unless set at workspace level.
|
||||
- name: Write optimisation flags
|
||||
- name: setup js-framework-benchmark
|
||||
shell: bash
|
||||
working-directory: js-framework-benchmark
|
||||
run: |
|
||||
cat >> Cargo.toml << EOF
|
||||
[profile.release]
|
||||
lto = true
|
||||
codegen-units = 1
|
||||
panic = "abort"
|
||||
EOF
|
||||
working-directory: yew
|
||||
npm ci
|
||||
npm run install-server
|
||||
npm run install-webdriver-ts
|
||||
|
||||
- name: save yew-struct setup
|
||||
- name: setup benchmark-struct benchmark
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir yew-struct-setup
|
||||
cp -r js-framework-benchmark/frameworks/keyed/yew/* yew-struct-setup/
|
||||
cd yew-struct-setup/bundled-dist
|
||||
rm -rf ./*
|
||||
# Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged
|
||||
# - name: save yew-hooks setup
|
||||
# shell: bash
|
||||
# run: |
|
||||
# mkdir yew-hooks-setup
|
||||
# cp -r js-framework-benchmark/frameworks/keyed/yew-hooks/* yew-hooks-setup/
|
||||
# cd yew-hooks-setup/bundled-dist
|
||||
# rm -rf ./*
|
||||
|
||||
- name: replace framework version in yew
|
||||
shell: bash
|
||||
run: |
|
||||
replace=" \"frameworkVersion\": \"\""
|
||||
input=$(cat yew-struct-setup/package.json)
|
||||
output=$(echo "$input" | sed -e "s@\"frameworkVersion\": .*\"@$replace@g")
|
||||
if [[ "$input" == "$output" ]]; then
|
||||
echo "ERROR: failed to configure framework version"
|
||||
exit 1
|
||||
fi
|
||||
echo "$output" > yew-struct-setup/package.json
|
||||
echo "$output"
|
||||
|
||||
# Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged
|
||||
# - name: replace framework version in yew-hooks
|
||||
# shell: bash
|
||||
# run: |
|
||||
# replace=" \"frameworkVersion\": \"\""
|
||||
# input=$(cat yew-hooks-setup/package.json)
|
||||
# output=$(echo "$input" | sed -e "s@\"frameworkVersion\": .*\"@$replace@g")
|
||||
# if [[ "$input" == "$output" ]]; then
|
||||
# echo "ERROR: failed to configure framework version"
|
||||
# exit 1
|
||||
# fi
|
||||
# echo "$output" > yew-hooks-setup/package.json
|
||||
# echo "$output"
|
||||
|
||||
- name: delete all frameworks
|
||||
shell: bash
|
||||
run: |
|
||||
cd js-framework-benchmark/frameworks/keyed
|
||||
rm -rf ./*
|
||||
cd ../non-keyed
|
||||
rm -rf ./*
|
||||
|
||||
- name: create framework folders
|
||||
shell: bash
|
||||
run: |
|
||||
cd js-framework-benchmark/frameworks/keyed
|
||||
mkdir yew-struct
|
||||
# Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged
|
||||
# mkdir yew-hooks
|
||||
|
||||
- name: copy necessary framework files
|
||||
shell: bash
|
||||
run: |
|
||||
cp -r yew-struct-setup/* js-framework-benchmark/frameworks/keyed/yew-struct/
|
||||
# Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged
|
||||
# cp -r yew-hooks-setup/* js-framework-benchmark/frameworks/keyed/yew-hooks/
|
||||
sed -i "s#../..#`realpath ./yew/`#" yew/tools/benchmark-struct/Cargo.toml
|
||||
rm -rf js-framework-benchmark/frameworks/keyed/yew/*
|
||||
cp -r yew/tools/benchmark-struct/* js-framework-benchmark/frameworks/keyed/yew/
|
||||
|
||||
- name: build benchmark-struct app
|
||||
shell: bash
|
||||
working-directory: js-framework-benchmark/frameworks/keyed/yew/
|
||||
run: |
|
||||
cd yew/tools/benchmark-struct
|
||||
npm ci
|
||||
npm run build-prod-without-tools-install
|
||||
|
||||
- name: setup yew-hooks benchmark
|
||||
shell: bash
|
||||
run: |
|
||||
sed -i "s#../..#`realpath ./yew/`#" yew/tools/benchmark-hooks/Cargo.toml
|
||||
rm -rf js-framework-benchmark/frameworks/keyed/yew-hooks/*
|
||||
cp -r yew/tools/benchmark-hooks/* js-framework-benchmark/frameworks/keyed/yew-hooks/
|
||||
|
||||
- name: build benchmark-hooks app
|
||||
shell: bash
|
||||
working-directory: js-framework-benchmark/frameworks/keyed/yew-hooks/
|
||||
run: |
|
||||
cd yew/tools/benchmark-hooks
|
||||
npm ci
|
||||
npm run build-prod-without-tools-install
|
||||
|
||||
- name: move dist files
|
||||
- name: run js-framework-benchmark server
|
||||
shell: bash
|
||||
run: |
|
||||
mv yew/tools/benchmark-struct/bundled-dist js-framework-benchmark/frameworks/keyed/yew-struct/
|
||||
# Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged
|
||||
# mv yew/tools/benchmark-hooks/bundled-dist js-framework-benchmark/frameworks/keyed/yew-hooks/
|
||||
|
||||
- name: js-framework-benchmark npm ci
|
||||
shell: bash
|
||||
run: |
|
||||
cd js-framework-benchmark
|
||||
npm ci
|
||||
|
||||
- name: js-framework-benchmark npm start
|
||||
shell: bash
|
||||
run: |
|
||||
cd js-framework-benchmark
|
||||
npm start &
|
||||
|
||||
- name: js-framework-benchmark/webdriver-ts npm ci
|
||||
shell: bash
|
||||
run: |
|
||||
cd js-framework-benchmark/webdriver-ts
|
||||
npm ci
|
||||
npm install chromedriver --chromedriver-force-download
|
||||
|
||||
- name: js-framework-benchmark/webdriver-ts npm run compile
|
||||
shell: bash
|
||||
run: |
|
||||
cd js-framework-benchmark/webdriver-ts
|
||||
npm run compile
|
||||
|
||||
- name: js-framework-benchmark npm run build-prod
|
||||
shell: bash
|
||||
run: |
|
||||
cd js-framework-benchmark
|
||||
npm run build-prod
|
||||
working-directory: js-framework-benchmark
|
||||
run: npm start &
|
||||
|
||||
- name: js-framework-benchmark/webdriver-ts npm run bench
|
||||
shell: bash
|
||||
run: |
|
||||
cd js-framework-benchmark/webdriver-ts
|
||||
npm run bench -- --headless
|
||||
|
||||
- name: transform results into json
|
||||
shell: bash
|
||||
run: |
|
||||
cd js-framework-benchmark/webdriver-ts/results
|
||||
touch temp.txt
|
||||
echo "[" >> temp.txt
|
||||
for filename in *.json; do cat ${filename} >> temp.txt; echo "," >> temp.txt; done
|
||||
sed -i '$ s/.$//' temp.txt #remove trailing comma
|
||||
echo "]" >> temp.txt
|
||||
mv temp.txt results.json
|
||||
|
||||
- name: Build process-benchmark-results
|
||||
shell: bash
|
||||
run: |
|
||||
cd yew/tools
|
||||
cargo build --release -p process-benchmark-results
|
||||
working-directory: js-framework-benchmark/webdriver-ts
|
||||
run: npm run tsbench -- --framework keyed/yew keyed/yew-hooks --runner playwright --headless
|
||||
|
||||
- name: transform results to be fit for display benchmark-action/github-action-benchmark@v1
|
||||
uses: mathiasvr/command-output@v1
|
||||
id: results
|
||||
with:
|
||||
run: cat js-framework-benchmark/webdriver-ts/results/results.json | ./yew/tools/target/release/process-benchmark-results
|
||||
run: |
|
||||
mkdir artifacts/
|
||||
jq -s . js-framework-benchmark/webdriver-ts/results/*.json | cargo run --manifest-path yew/tools/Cargo.toml --release -p process-benchmark-results > artifacts/results.json
|
||||
echo ${{ github.event.number }} > artifacts/PR_INFO
|
||||
|
||||
- name: Upload result artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: results
|
||||
path: artifacts/
|
||||
if-no-files-found: error
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
name: "Post benchmark results"
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: ["Benchmark"]
|
||||
types:
|
||||
- completed
|
||||
|
||||
jobs:
|
||||
post-benchmark-results:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.workflow_run.conclusion == 'success'
|
||||
|
||||
steps:
|
||||
- name: Download result artifacts
|
||||
uses: Legit-Labs/action-download-artifact@v2
|
||||
with:
|
||||
workflow: benchmark.yml
|
||||
run_id: ${{ github.event.workflow_run.id }}
|
||||
name: results
|
||||
|
||||
- name: Test for PR
|
||||
uses: mathiasvr/command-output@v1
|
||||
id: test-pr
|
||||
with:
|
||||
run: cat PR_INFO
|
||||
|
||||
# gh-pages branch is updated and pushed automatically with extracted benchmark data
|
||||
- name: Store benchmark result
|
||||
uses: benchmark-action/github-action-benchmark@v1
|
||||
with:
|
||||
name: "Yew master branch benchmarks (Lower is better)"
|
||||
tool: "customSmallerIsBetter"
|
||||
output-file-path: results.json
|
||||
gh-pages-branch: "gh-pages"
|
||||
# Access token to deploy GitHub Pages branch
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
# Push and deploy GitHub pages branch automatically
|
||||
alert-threshold: "200%"
|
||||
alert-comment-cc-users: "@yewstack/yew"
|
||||
auto-push: true
|
||||
save-data-file: ${{ steps.test-pr.outputs.stdout == "" }}
|
|
@ -85,7 +85,7 @@ dependencies = [
|
|||
"serde_json",
|
||||
"tabled",
|
||||
"tokio",
|
||||
"yew 0.19.3",
|
||||
"yew",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -405,7 +405,7 @@ name = "function_router"
|
|||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"getrandom",
|
||||
"gloo 0.8.0",
|
||||
"gloo",
|
||||
"instant",
|
||||
"lipsum",
|
||||
"log",
|
||||
|
@ -413,7 +413,7 @@ dependencies = [
|
|||
"rand",
|
||||
"serde",
|
||||
"wasm-logger",
|
||||
"yew 0.19.3",
|
||||
"yew",
|
||||
"yew-router",
|
||||
]
|
||||
|
||||
|
@ -528,22 +528,6 @@ version = "0.3.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
|
||||
|
||||
[[package]]
|
||||
name = "gloo"
|
||||
version = "0.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "23947965eee55e3e97a5cd142dd4c10631cc349b48cecca0ed230fd296f568cd"
|
||||
dependencies = [
|
||||
"gloo-console",
|
||||
"gloo-dialogs",
|
||||
"gloo-events",
|
||||
"gloo-file",
|
||||
"gloo-render",
|
||||
"gloo-storage",
|
||||
"gloo-timers",
|
||||
"gloo-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gloo"
|
||||
version = "0.8.0"
|
||||
|
@ -975,7 +959,7 @@ dependencies = [
|
|||
"rand",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
"yew 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"yew",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -986,7 +970,7 @@ dependencies = [
|
|||
"rand",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
"yew 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"yew",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1383,7 +1367,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "03b55e106e5791fa5a13abd13c85d6127312e8e09098059ca2bc9b03ca4cf488"
|
||||
dependencies = [
|
||||
"futures",
|
||||
"gloo 0.8.0",
|
||||
"gloo",
|
||||
"num_cpus",
|
||||
"once_cell",
|
||||
"pin-project",
|
||||
|
@ -1541,12 +1525,6 @@ dependencies = [
|
|||
"windows-sys 0.36.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "scoped-tls-hkt"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c2e9d7eaddb227e8fbaaa71136ae0e1e913ca159b86c7da82f3e8f0044ad3a63"
|
||||
|
||||
[[package]]
|
||||
name = "scopeguard"
|
||||
version = "1.1.0"
|
||||
|
@ -2131,14 +2109,14 @@ dependencies = [
|
|||
"boolinator",
|
||||
"derive_more",
|
||||
"glob",
|
||||
"gloo 0.8.0",
|
||||
"gloo",
|
||||
"js-sys",
|
||||
"tokio",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"web-sys",
|
||||
"weblog",
|
||||
"yew 0.19.3",
|
||||
"yew",
|
||||
"yew-agent",
|
||||
"yew-router",
|
||||
]
|
||||
|
@ -2285,13 +2263,13 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "yew"
|
||||
version = "0.19.3"
|
||||
version = "0.20.0"
|
||||
dependencies = [
|
||||
"base64ct",
|
||||
"bincode",
|
||||
"console_error_panic_hook",
|
||||
"futures",
|
||||
"gloo 0.8.0",
|
||||
"gloo",
|
||||
"html-escape",
|
||||
"implicit-clone",
|
||||
"indexmap",
|
||||
|
@ -2306,39 +2284,20 @@ dependencies = [
|
|||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"web-sys",
|
||||
"yew-macro 0.19.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yew"
|
||||
version = "0.19.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2a1ccb53e57d3f7d847338cf5758befa811cabe207df07f543c06f502f9998cd"
|
||||
dependencies = [
|
||||
"console_error_panic_hook",
|
||||
"gloo 0.4.2",
|
||||
"gloo-utils",
|
||||
"indexmap",
|
||||
"js-sys",
|
||||
"scoped-tls-hkt",
|
||||
"slab",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"web-sys",
|
||||
"yew-macro 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"yew-macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yew-agent"
|
||||
version = "0.1.0"
|
||||
version = "0.2.0"
|
||||
dependencies = [
|
||||
"gloo-worker 0.1.2",
|
||||
"yew 0.19.3",
|
||||
"yew",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yew-macro"
|
||||
version = "0.19.3"
|
||||
version = "0.20.0"
|
||||
dependencies = [
|
||||
"boolinator",
|
||||
"once_cell",
|
||||
|
@ -2349,25 +2308,11 @@ dependencies = [
|
|||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yew-macro"
|
||||
version = "0.19.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5fab79082b556d768d6e21811869c761893f0450e1d550a67892b9bce303b7bb"
|
||||
dependencies = [
|
||||
"boolinator",
|
||||
"lazy_static",
|
||||
"proc-macro-error",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yew-router"
|
||||
version = "0.16.0"
|
||||
version = "0.17.0"
|
||||
dependencies = [
|
||||
"gloo 0.8.0",
|
||||
"gloo",
|
||||
"js-sys",
|
||||
"route-recognizer",
|
||||
"serde",
|
||||
|
@ -2375,13 +2320,13 @@ dependencies = [
|
|||
"tracing",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
"yew 0.19.3",
|
||||
"yew",
|
||||
"yew-router-macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yew-router-macro"
|
||||
version = "0.16.0"
|
||||
version = "0.17.0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
|
@ -8,11 +8,16 @@ edition = "2021"
|
|||
crate-type = ["cdylib"]
|
||||
|
||||
[dependencies]
|
||||
rand = { version = "0.8.4", features = ["small_rng"] }
|
||||
getrandom = { version = "0.2.1", features = ["js"] }
|
||||
wasm-bindgen = "0.2.80"
|
||||
web-sys = { version = "0.3.55", features = ["Window"]}
|
||||
yew = "0.19.3"
|
||||
rand = { version = "0.8.5", features = ["small_rng"] }
|
||||
getrandom = { version = "0.2.8", features = ["js"] }
|
||||
wasm-bindgen = "0.2.83"
|
||||
web-sys = { version = "0.3.60", features = ["Window"]}
|
||||
yew = { version = "0.20.0", features = ["csr"], path = "../../packages/yew" }
|
||||
|
||||
[profile.release]
|
||||
lto = true
|
||||
codegen-units = 1
|
||||
panic = "abort"
|
||||
|
||||
[package.metadata.wasm-pack.profile.release]
|
||||
wasm-opt = ['-O4']
|
||||
|
|
|
@ -1,8 +1,170 @@
|
|||
{
|
||||
"name": "js-framework-benchmark-non-keyed-yew",
|
||||
"name": "js-framework-benchmark-non-keyed-yew-hooks",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "js-framework-benchmark-non-keyed-yew-hooks",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"cpr": "^3.0.1",
|
||||
"rimraf": "^2.6.3"
|
||||
}
|
||||
},
|
||||
"node_modules/balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/cpr": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cpr/-/cpr-3.0.1.tgz",
|
||||
"integrity": "sha512-Xch4PXQ/KC8lJ+KfJ9JI6eG/nmppLrPPWg5Q+vh65Qr9EjuJEubxh/H/Le1TmCZ7+Xv7iJuNRqapyOFZB+wsxA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"graceful-fs": "^4.1.5",
|
||||
"minimist": "^1.2.0",
|
||||
"mkdirp": "~0.5.1",
|
||||
"rimraf": "^2.5.4"
|
||||
},
|
||||
"bin": {
|
||||
"cpr": "bin/cpr"
|
||||
}
|
||||
},
|
||||
"node_modules/fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/glob": {
|
||||
"version": "7.2.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
||||
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.1.1",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/graceful-fs": {
|
||||
"version": "4.2.10",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
|
||||
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"node_modules/inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/minimatch": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/minimist": {
|
||||
"version": "1.2.6",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
|
||||
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/mkdirp": {
|
||||
"version": "0.5.6",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
|
||||
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"minimist": "^1.2.6"
|
||||
},
|
||||
"bin": {
|
||||
"mkdirp": "bin/cmd.js"
|
||||
}
|
||||
},
|
||||
"node_modules/once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"node_modules/path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/rimraf": {
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
|
||||
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"glob": "^7.1.3"
|
||||
},
|
||||
"bin": {
|
||||
"rimraf": "bin.js"
|
||||
}
|
||||
},
|
||||
"node_modules/wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
||||
"dev": true
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"balanced-match": {
|
||||
"version": "1.0.2",
|
||||
|
@ -23,13 +185,13 @@
|
|||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||
"dev": true
|
||||
},
|
||||
"cpr": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cpr/-/cpr-3.0.1.tgz",
|
||||
"integrity": "sha1-uaVQOLfNgaNcF7l2GJW9hJau8eU=",
|
||||
"integrity": "sha512-Xch4PXQ/KC8lJ+KfJ9JI6eG/nmppLrPPWg5Q+vh65Qr9EjuJEubxh/H/Le1TmCZ7+Xv7iJuNRqapyOFZB+wsxA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.5",
|
||||
|
@ -41,33 +203,33 @@
|
|||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
|
||||
"dev": true
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
|
||||
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
|
||||
"version": "7.2.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
||||
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.0.4",
|
||||
"minimatch": "^3.1.1",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "4.2.9",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
|
||||
"integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
|
||||
"version": "4.2.10",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
|
||||
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
|
||||
"dev": true
|
||||
},
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
|
@ -96,18 +258,18 @@
|
|||
"dev": true
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.5",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
||||
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
||||
"version": "0.5.6",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
|
||||
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "^1.2.5"
|
||||
"minimist": "^1.2.6"
|
||||
}
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
|
@ -116,7 +278,7 @@
|
|||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
||||
"dev": true
|
||||
},
|
||||
"rimraf": {
|
||||
|
@ -131,7 +293,7 @@
|
|||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
{
|
||||
"name": "js-framework-benchmark-non-keyed-yew-hooks",
|
||||
"name": "js-framework-benchmark-keyed-yew-hooks",
|
||||
"version": "1.0.0",
|
||||
"description": "Benchmark for Yew Hooks",
|
||||
"license": "ISC",
|
||||
"js-framework-benchmark": {
|
||||
"frameworkVersion": "latest"
|
||||
"frameworkVersion": "latest",
|
||||
"frameworkHomeURL": "https://yew.rs/",
|
||||
"issues": [
|
||||
1139
|
||||
]
|
||||
},
|
||||
"scripts": {
|
||||
"build-prod": "echo This is a no-op. && echo Due to heavy dependencies, the generated javascript is already provided. && echo If you really want to rebuild from source use: && echo npm run build-prod-force",
|
||||
|
|
|
@ -228,7 +228,7 @@ fn jumbotron(props: &JumbotronProps) -> Html {
|
|||
<div class="jumbotron">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<h1>{ "Yew" }</h1>
|
||||
<h1>{ "Yew-Hooks" }</h1>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="row">
|
||||
|
@ -287,5 +287,5 @@ fn row(props: &RowProps) -> Html {
|
|||
pub fn start() {
|
||||
let document = window().unwrap().document().unwrap();
|
||||
let mount_el = document.query_selector("#main").unwrap().unwrap();
|
||||
yew::start_app_in_element::<App>(mount_el);
|
||||
yew::Renderer::<App>::with_root(mount_el).render();
|
||||
}
|
||||
|
|
|
@ -8,11 +8,16 @@ edition = "2021"
|
|||
crate-type = ["cdylib"]
|
||||
|
||||
[dependencies]
|
||||
rand = { version = "0.8.4", features = ["small_rng"] }
|
||||
getrandom = { version = "0.2.1", features = ["js"] }
|
||||
wasm-bindgen = "0.2.80"
|
||||
web-sys = { version = "0.3.55", features = ["Window"]}
|
||||
yew = "0.19.3"
|
||||
rand = { version = "0.8.5", features = ["small_rng"] }
|
||||
getrandom = { version = "0.2.8", features = ["js"] }
|
||||
wasm-bindgen = "0.2.83"
|
||||
web-sys = { version = "0.3.60", features = ["Window"]}
|
||||
yew = { version = "0.20.0", features = ["csr"], path = "../../packages/yew" }
|
||||
|
||||
[profile.release]
|
||||
lto = true
|
||||
codegen-units = 1
|
||||
panic = "abort"
|
||||
|
||||
[package.metadata.wasm-pack.profile.release]
|
||||
wasm-opt = ['-O4']
|
||||
|
|
|
@ -1,8 +1,170 @@
|
|||
{
|
||||
"name": "js-framework-benchmark-non-keyed-yew",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "js-framework-benchmark-non-keyed-yew",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"cpr": "^3.0.1",
|
||||
"rimraf": "^2.6.3"
|
||||
}
|
||||
},
|
||||
"node_modules/balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/cpr": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cpr/-/cpr-3.0.1.tgz",
|
||||
"integrity": "sha512-Xch4PXQ/KC8lJ+KfJ9JI6eG/nmppLrPPWg5Q+vh65Qr9EjuJEubxh/H/Le1TmCZ7+Xv7iJuNRqapyOFZB+wsxA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"graceful-fs": "^4.1.5",
|
||||
"minimist": "^1.2.0",
|
||||
"mkdirp": "~0.5.1",
|
||||
"rimraf": "^2.5.4"
|
||||
},
|
||||
"bin": {
|
||||
"cpr": "bin/cpr"
|
||||
}
|
||||
},
|
||||
"node_modules/fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/glob": {
|
||||
"version": "7.2.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
||||
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.1.1",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/graceful-fs": {
|
||||
"version": "4.2.10",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
|
||||
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"node_modules/inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/minimatch": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/minimist": {
|
||||
"version": "1.2.6",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
|
||||
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/mkdirp": {
|
||||
"version": "0.5.6",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
|
||||
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"minimist": "^1.2.6"
|
||||
},
|
||||
"bin": {
|
||||
"mkdirp": "bin/cmd.js"
|
||||
}
|
||||
},
|
||||
"node_modules/once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"node_modules/path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/rimraf": {
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
|
||||
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"glob": "^7.1.3"
|
||||
},
|
||||
"bin": {
|
||||
"rimraf": "bin.js"
|
||||
}
|
||||
},
|
||||
"node_modules/wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
||||
"dev": true
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"balanced-match": {
|
||||
"version": "1.0.2",
|
||||
|
@ -23,13 +185,13 @@
|
|||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||
"dev": true
|
||||
},
|
||||
"cpr": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cpr/-/cpr-3.0.1.tgz",
|
||||
"integrity": "sha1-uaVQOLfNgaNcF7l2GJW9hJau8eU=",
|
||||
"integrity": "sha512-Xch4PXQ/KC8lJ+KfJ9JI6eG/nmppLrPPWg5Q+vh65Qr9EjuJEubxh/H/Le1TmCZ7+Xv7iJuNRqapyOFZB+wsxA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.5",
|
||||
|
@ -41,33 +203,33 @@
|
|||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
|
||||
"dev": true
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
|
||||
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
|
||||
"version": "7.2.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
||||
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.0.4",
|
||||
"minimatch": "^3.1.1",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "4.2.9",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
|
||||
"integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
|
||||
"version": "4.2.10",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
|
||||
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
|
||||
"dev": true
|
||||
},
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
|
@ -96,18 +258,18 @@
|
|||
"dev": true
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.5",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
||||
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
||||
"version": "0.5.6",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
|
||||
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "^1.2.5"
|
||||
"minimist": "^1.2.6"
|
||||
}
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
|
@ -116,7 +278,7 @@
|
|||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
||||
"dev": true
|
||||
},
|
||||
"rimraf": {
|
||||
|
@ -131,7 +293,7 @@
|
|||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
{
|
||||
"name": "js-framework-benchmark-non-keyed-yew",
|
||||
"name": "js-framework-benchmark-keyed-yew",
|
||||
"version": "1.0.0",
|
||||
"description": "Benchmark for Yew",
|
||||
"license": "ISC",
|
||||
"js-framework-benchmark": {
|
||||
"frameworkVersion": "latest"
|
||||
"frameworkVersion": "latest",
|
||||
"frameworkHomeURL": "https://yew.rs/",
|
||||
"issues": [
|
||||
1139
|
||||
]
|
||||
},
|
||||
"scripts": {
|
||||
"build-prod": "echo This is a no-op. && echo Due to heavy dependencies, the generated javascript is already provided. && echo If you really want to rebuild from source use: && echo npm run build-prod-force",
|
||||
|
|
|
@ -202,7 +202,7 @@ impl Component for Jumbotron {
|
|||
<div class="jumbotron">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<h1>{ "Yew-Hooks" }</h1>
|
||||
<h1>{ "Yew" }</h1>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="row">
|
||||
|
@ -257,7 +257,7 @@ impl Component for Row {
|
|||
}
|
||||
}
|
||||
|
||||
fn changed(&mut self, ctx: &Context<Self>) -> bool {
|
||||
fn changed(&mut self, ctx: &Context<Self>, _: &Self::Properties) -> bool {
|
||||
let id = ctx.props().data.id;
|
||||
self.on_select = ctx.props().on_select.reform(move |_| id);
|
||||
self.on_remove = ctx.props().on_remove.reform(move |_| id);
|
||||
|
@ -286,5 +286,5 @@ impl Component for Row {
|
|||
pub fn start() {
|
||||
let document = window().unwrap().document().unwrap();
|
||||
let mount_el = document.query_selector("#main").unwrap().unwrap();
|
||||
yew::start_app_in_element::<App>(mount_el);
|
||||
yew::Renderer::<App>::with_root(mount_el).render();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue