Optinionated set of JS snippets. Originally forked from https://github.com/gaboesquivel/atom-standardjs-snippets, but we've added couple more. Also these are not using special characters because vscode doesn't accept them in the snippets.
Standard JavaScript Snippets for Visual studio codeA collection of javascript and react snippets for faster JavaScript development in Visual studio Code.
This collection is complementary to atom/language-javascript. It's based on extrabacon/atom-turbo-javascript.
Yes!, no semicolons:
Snippets are optimized to be short and easy to remember. Shortest are the ones you should be using most often. Note that these links work only on github, not on VSCode marketplace:
var ${1:name} = ${2:value}
la⇥
let assignment awaited
let ${1:name} = await ${2:value}
ly⇥
let yielded assignment
let ${1:name} = yield ${2:value}
cd⇥
const from destructuring
const { ${1:name} } = ${2:value}
ca⇥
const assignment awaited
const ${1:name} = await ${2:value}
cd⇥
const from destructuring awaited
const { ${1:name} } = await ${2:value}
cf⇥
const arrow function assignment
const ${1:name} = (${2:arguments}) => {\n\treturn ${0}\n}
cy⇥
const yielded assignment
const ${1:name} = yield ${2:value}
if (${1:condition}) { ${0} }
${1:cond} ? ${2:true} : ${3: false}
const ${0} = ${1:cond} ? ${2:true} : ${3: false}
if (${1:condition}) { ${0} } else { }
else if (${1:condition}) { ${0} }
for (let ${1:i} = 0, ${2:len} = ${3:iterable}.length ${1:i} < ${2:len}; ${1:i}++) { ${0} }
for (let ${1:key} in ${2:source}) { if (${2:source}.hasOwnProperty(${1:key})) { ${0} } }
for (const ${1:key} of ${2:source}) { ${0} }
while (${1:condition}) { ${0} }
wid⇥
while iteration decrementing
let ${1:array}Index = ${1:array}.length while (${1:array}Index--) { ${0} }
try { ${0} } catch (${1:err}) { }
try { ${0} } catch (${1:err}) { } finally { }
function (${1:arguments}) {${0}}
function ${1:name}(${2:arguments}) { ${0} }
async function (${1:arguments}) { ${0} }
aa⇥
async arrow function with
async (${1:arguments}) => { ${0} }
iife⇥
immediately-invoked function expression (IIFE)
;(function (${1:arguments}) { ${0} })(${2})
aiife⇥
async immediately-invoked function expression
very useful when you don't have top level await(node 16 and lower)
;(async (${1:arguments}) => { ${0} })(${2})
(${1:arguments}) => ${2:statement}
afi⇥
arrow function identity fd⇥
arrow function with destructuring
({${1:arguments}}) => ${2:statement}
fdr⇥
arrow function with destructuring returning destructured
({${1:arguments}}) => ${1:arguments}
f⇥
arrow function with body (ES6)
(${1:arguments}) => { ${0} }
fr⇥
arrow function with return (ES6)
(${1:arguments}) => { return ${0} }
fro⇥
arrow function with single returned object
(${1:arguments}) => ({ ${0} })
gf⇥
generator function (ES6)
function* (${1:arguments}) { ${0} }
gfn⇥
named generator function (ES6)
function* ${1:name}(${1:arguments}) { ${0} }
${1:iterable}.forEach((${2:item}) => { ${0} })
${1:iterable}.map((${2:item}) => { ${0} })
mapsd⇥
map single desctructured argument
${1:iterable}.map((${2:item}) => ${2:item})
${1:iterable}.reduce((${2:previous}, ${3:current}) => { ${0} }${4:, initial})
${1:iterable}.filter((${2:item}) => { ${0} })
${1:iterable}.find((${2:item}) => { ${0} })
${1:iterable}.every((${2:item}) => { ${0} })
${1:iterable}.some((${2:item}) => { ${0} })
class ${1:name} { constructor(${2:arguments}) { ${0} } }
csx⇥
extend a class (ES6)
class ${1:name} extends ${2:base} { constructor(${2:arguments}) { super(${2:arguments}) ${0} } }
${1:method} (${2:arguments}) { ${0} }
get ${1:property} () { ${0} }
set ${1:property} (${2:value}) { ${0} }
gs⇥
getter and setter (ES6 syntax)
get ${1:property} () { ${0} } set ${1:property} (${2:value}) { }
${1:Class}.prototype.${2:methodName} = function (${3:arguments}) { ${0} }
Object.assign(${1:dest}, ${2:source})
og
Object.getOwnPropertyDescriptor
Object.getOwnPropertyDescriptor(${1:dest}, '${2:prop}')
Object.defineProperty(${1:dest}, '${2:prop}', { ${0} })
rf⇥
return arrow function
return (${1:arguments}) => ${2:statement}
return new Promise((resolve, reject) => { ${0} })
typeof ${1:source} === '${2:undefined}'
iof⇥
instanceof comparison
${1:source} instanceof ${2:Object}
Array.isArray(${1:source})
new Promise((resolve, reject) => { ${0} })
${1:promise}.then((${2:value}) => { ${0} })
${1:promise}.catch(error => { ${0} })
ed⇥
module default export
export default ${1:member}
edf⇥
module default export function
export default function ${1:name} (${2:arguments}) {\n\t${0}\n}
export const ${1:member} = ${2:value}
export function ${1:member} (${2:arguments}) {\n\t${0}\n}
import ${1:*} from '${2:module}'
import ${1:*} as ${2:name} from '${3:module}'
id⇥
module import destructuring
import { $1 } from '${2:module}'BDD testing (Mocha, Jasmine, etc.)
describe('${1:description}', function () { ${0} })
describe('${TM_FILENAME_BASE}', function () { ${0} })
it('${1:description}', async () => { ${0} })
it('${1:description}', (done) => { ${0} })
it('${1:description}', () => { ${0} })
before(function () { ${0} })
beforeEach(function () { ${0} })
after(function () { ${0} })
afterEach(function () { ${0} })
setTimeout(() => { ${0} }, ${1:delay})
setTimeout(() => { ${0} }, ${1:delay})
setImmediate(() => { ${0} })
${1:document}.addEventListener('${2:event}', ${3:ev} => { ${0} })
${1:document}.removeEventListener('${2:event}', ${3:listener})
evc
dom event cancel default and propagation
ev.preventDefault() ev.stopPropagation() return false
${1:document}.getElementById('${2:id}')
gc⇥
getElementsByClassName
Array.from(${1:document}.getElementsByClassName('${2:class}'))
Array.from(${1:document}.getElementsByTagName('${2:tag}'))
${1:document}.querySelector('${2:selector}')
Array.from(${1:document}.querySelectorAll('${2:selector}'))
cdf⇥
createDocumentFragment
${1:document}.createDocumentFragment(${2:elem});
${1:document}.createElement(${2:elem});
${1:document}.appendChild(${2:elem});
${1:document}.removeChild(${2:elem});
${1:document}.classList.add('${2:class}');
${1:document}.classList.toggle('${2:class}');
${1:document}.classList.remove('${2:class}');
${1:document}.getAttribute('${2:attr}');
${1:document}.setAttribute('${2:attr}', ${3:value});
${1:document}.removeAttribute('${2:attr}');
cb⇥
Node.js style callback
function (err, ${1:value}) { if (err) throw err t${0} }
cr⇥
require and assign a module
const ${1:module} = require('${1:module}')
exports.${1:name} = ${2:value}
module.exports = ${1:name}
on⇥
attach an event handler
${1:emitter}.on('${2:event}', (${3:arguments}) => { ${0} })
await Promise.all(${1:value})
await Promise.all(${1:array}.map((async ${2:value}) => {\n\t${0}\n}))
await new Promise((r) => setTimeout(r, ${0}))
console.log('${0}:', ${0})
Are only enabled in jsx
or tsx
files. If you write your jsx in js
files, you need to copy the react.json
files manually and add it to your custom snippets.
If you're not writing react, including them should not really bother you because they are not short as the regular JS snippets. Also IMHO react is the leading solution for FE apps deserves to be included by default, because any JS dev will have to write some react eventually over the course of his/her careeer. By having them in a single package we can easily make sure --there aren't any conflicts in the trigger prefixes.
Supported languages (file extensions)These were originally taken from https://github.com/TimonVS/vscode-react-standard because the maintainer wasn't able to publish a new version for months even when there was a considerable flaw in the released version. Below is a list of all available snippets and the triggers of each one.
Trigger Contentj
jsx element dp
destructuring of props ds
destructuring of props jc
jsx self-closed element jm
jsx elements map
jmr
jsx elements map with return
rfc
functional component. Prefer for 99% of new react component rfce
functional component with emotion css import rcc
class component skeleton rccp
class component skeleton with prop types after the class rcjc
class component skeleton without import and default export lines rcfc
class component skeleton that contains all the lifecycle methods rfcp
stateless component with prop types skeleton rpt
empty propTypes declaration con
class default constructor with props conc
class default constructor with props and context est
empty state object cwm
componentWillMount method
cdm
componentDidMount method
cwr
componentWillReceiveProps method
cgd
componentGetDerivedStateFromProps method
scu
shouldComponentUpdate method
cwup
componentWillUpdate method
cdup
componentDidUpdate method
cwun
componentWillUnmount method
ren
render method
sst
this.setState with object as parameter
ssf
this.setState with function as parameter
tp
this.props
ts
this.state
us
useState
ue
useEffect
uec
useEffect
with a cleanup function ur
useRef
cc
createContext
uc
useContext
ume
useMemo
------- ---------------------------------------------------------------- uq
useQuery
to be used with graphql-codegen uqc
useQuery
that loads up data for current component, to be used with graphql-codegen um
useMutation
to be used with graphql-codegen uqg
useQuery with raw gql
umg
useMutation with raw gql
There are also snippets to be triggered with a text selection(trigger via insert snippet command):
jsx element wrap selection
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4